Вы можете сделать что-то более общее с выбором свойств, но быть конкретным с типом, из которого вы выбираете, в вашем случае 'Order':
напишите свою функцию как общую:
public List<Order> GetOrderList<T>(IEnumerable<Order> orders, Func<Order, T> propertySelector)
{
return (from order in orders
orderby propertySelector(order)
select order).ToList();
}
и затем используйте это так:
var ordersOrderedByDate = GetOrderList(orders, x => x.OrderDate);
Вы можете быть еще более универсальными и определить открытый тип для того, что вы хотите заказать:
public List<T> OrderBy<T,P>(IEnumerable<T> collection, Func<T,P> propertySelector)
{
return (from item in collection
orderby propertySelector(item)
select item).ToList();
}
и использовать его так же:
var ordersOrderedByDate = OrderBy(orders, x => x.OrderDate);
Это глупый ненужный сложный способ выполнения стиля OrderQy в LINQ, но он может дать вам представление о том, как его можно реализовать в общем виде.