Собственная поддержка C # для проверки сортировки IEnumerable?

Есть ли поддержка LINQ для проверки, еслиIEnumerable<T> отсортировано? У меня есть перечисляемое, которое я хочу проверить, отсортировано в нисходящем порядке, но я не могу найти нативную поддержку для этого в C #.

Я написал свой собственный метод расширения, используяIComparables<T>:

public static bool IsSorted<T>(this IEnumerable<T> collection) where T : IComparable<T>
{
   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<T> объект:

public static bool IsSorted<T>(this IEnumerable<T> collection, IComparer<T> 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;
}

Ответы на вопрос(5)

Ваш ответ на вопрос