Для этого есть другой метод, OrderByDescending
Возможно, это немного излишне, но если вы действительно хотите передать параметр, указывающий порядок сортировки, вы можете создать метод расширения:
public static IOrderedEnumerable<TResult> OrderBy<TResult,TKey>(this IEnumerable<TResult> source, Func<TResult, TKey> keySelector, bool ascending)
{
Func<Func<TResult, TKey>, IOrderedEnumerable<TResult>> orderMethod = source.OrderBy;
if(!ascending)
orderMethod = source.OrderByDescending;
return orderMethod.Invoke(keySelector);
}
Так ты сможешь сделать
bool ascending = true;
list.OrderBy(item => item.Name, ascending);