Я думаю, что вы хотите:
double averageDays = list
.Skip(1)
.Zip(list, (next, prev) => (double)next.Subtract(prev).Days)
.Average();
Обратите внимание, что это среднее значение с потерями .Вы уверены, что не хотите использовать TotalDays
вместо этого?
РЕДАКТИРОВАТЬ:
Способ, которым это работает, состоит в том, чтобы наложить последовательность с версией последовательности с одной задержкой,что позволяет легко рассчитать последовательные дельты.Тогда нужно просто усреднить дельты, чтобы получить результат.
Для сравнения, «точный» перевод существующего кода будет выглядеть так:
double averageDays = Enumerable
.Range(1, list.Count - 1)
.Average(i => (double)list[i].Subtract(list[i - 1]).Days);