Is there any LINQ support for checking if an IEnumerable<T> is sorted? I have an enumerable that I want to verify is sorted in non-descending order, but I can't seem to find native support for it in C#.
I've written my own extension method using 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;
}
And one using an IComparer<T> object:    
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;
}