Арифметическая разница между двумя объектами DateTime в .NET всегда является TimeSpan, это ваша первая проблема. И если бы у вас был TimeSpan, он бы не реализовывал IEnumerable <>, поэтому его нельзя использовать как последовательность. Вы можете написать собственное выражение последовательности, хотя:
let rec dates (fromDate:System.DateTime) (toDate:System.DateTime) = seq {
if fromDate <= toDate then
yield fromDate
yield! dates (fromDate.AddDays(1.0)) toDate
}
Вы используете его, чтобы создать последовательность со всеми датами в диапазоне, а затем отфильтровать результат:
let result = dates startDate endDate |> Seq.filter (fun dt -> IsBusinessDate(dt))