public static FluentOrderer<T> OrderFluentlyByDescending<T,TResult>(this IEnumerable<T> source, Func<T,TResult> predicate) 
     where TResult : IComparable<TResult>
 {
     var result = new FluentOrderer<T>(source);
     result.Comparers.Add((a,b)=>predicate(a).CompareTo(predicate(b)) * -1);
     return result;
 }
 public static FluentOrderer<T> ThenByDescending<T, TResult>(this FluentOrderer<T> source, Func<T, TResult> predicate)
     where TResult : IComparable<TResult>
 {
     source.Comparers.Add((a, b) => predicate(a).CompareTo(predicate(b)) * -1);
     return source;
 }