using System.Linq.Expressions;
public static void Main()
var values = new[] { 3, 1, 2 };
Console.WriteLine("Highest: " + values.AsQueryable().Order(x => x, true).First());
Console.WriteLine("Lowest: " + values.AsQueryable().Order(x => x).First());
public static class Extensions
public static IOrderedQueryable<TSource> Order<TSource, TKey>(
this IQueryable<TSource> source,
Expression<Func<TSource, TKey>> keySelector,
return descending ? source.OrderByDescending(keySelector) : source.OrderBy(keySelector);