Собственная поддержка C # для проверки сортировки IEnumerable?
Есть ли поддержка LINQ для проверки, еслиIEnumerable
отсортировано? У меня есть перечисление, которое я хочу проверить, отсортировано в нисходящем порядке, но я могуКажется, я не нашел нативной поддержки в C #.
я написал свой собственный метод расширения, используя:IComparables
public static bool IsSorted(this IEnumerable collection) where T : IComparable
{
Contract.Requires(collection != null);
using (var enumerator = collection.GetEnumerator())
{
if (enumerator.MoveNext())
{
var previous = enumerator.Current;
while (enumerator.MoveNext())
{
var current = enumerator.Current;
if (previous.CompareTo(current) > 0)
return false;
previous = current;
}
}
}
return true;
}
И один с помощьюIComparer
объект:
public static bool IsSorted(this IEnumerable collection, IComparer comparer)
{
Contract.Requires(collection != null);
using (var enumerator = collection.GetEnumerator())
{
if (enumerator.MoveNext())
{
var previous = enumerator.Current;
while (enumerator.MoveNext())
{
var current = enumerator.Current;
if (comparer.Compare(previous, current) > 0)
return false;
previous = current;
}
}
}
return true;
}