.NET 4.0 мог бы использовать метод Enumerable.Zip
, чтобы сжать список со смещением на единицу, который соединяет каждый элемент с последующим элементом в списке. Затем вы можете проверить, что условие выполняется для каждой пары, например,
var ordered = studyFeeds.Zip(studyFeeds.Skip(1), (a, b) => new { a, b })
.All(p => p.a.Date < p.b.Date);
Если вы работаете с более ранней версией фреймворка, вы можете написать свой собственный метод Zip без особых проблем, что-то вроде следующего (проверка аргументов и удаление перечислителей, если применимо, предоставляется читателю):
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(
this IEnumerable<TFirst> first,
IEnumerable<TSecond> second,
Func<TFirst, TSecond, TResult> selector)
{
var e1 = first.GetEnumerator();
var e2 = second.GetEnumerator();
while (e1.MoveNext() & e2.MoveNext()) // one & is important
yield return selector(e1.Current, e2.Current);
}