Попробуйте следующее
double hours = (b-a).TotalHours;
Если вы просто хотите узнать разницу в часах, за исключением разницы в днях, вы можете использовать следующее
int hours = (b-a).Hours;
Разница между этими двумя свойствами в основном проявляется, когда разница во времени составляет более 1 дня. Свойство Hours будет сообщать только фактическую разницу в часах между двумя датами. Таким образом, если две даты отличаются на 100 лет, но произошли в одно и то же время дня, часы вернутся на 0. Но TotalHours вернет разницу между общим количеством часов, которые произошли между двумя датами (в данном случае 876 000 часов).
Другое отличие состоит в том, что TotalHours вернет дробные часы. Это может или не может быть то, что вы хотите. Если нет, Math.Round может настроить его по своему вкусу.