Soporte nativo de C # para verificar si un IEnumerable está ordenado?

¿Hay algún soporte de LINQ para comprobar si unIEnumerable<T> está ordenado? Tengo una enumerable que quiero verificar que esté ordenada en orden no descendente, pero parece que no puedo encontrar soporte nativo para ella en C #.

He escrito mi propio método de extensión utilizandoIComparables<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;
}

Y uno usando unIComparer<T> objeto:

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;
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta