Puoi fare qualcosa di più generico sulla selezione delle proprietà ma essere specifico sul tipo da cui stai selezionando, nel tuo caso 'Ordine':
scrivi la tua funzione come generica:
public List<Order> GetOrderList<T>(IEnumerable<Order> orders, Func<Order, T> propertySelector)
{
return (from order in orders
orderby propertySelector(order)
select order).ToList();
}
e poi usalo in questo modo:
var ordersOrderedByDate = GetOrderList(orders, x => x.OrderDate);
Puoi essere ancora più generico e definire un tipo aperto per ciò che desideri ordinare:
public List<T> OrderBy<T,P>(IEnumerable<T> collection, Func<T,P> propertySelector)
{
return (from item in collection
orderby propertySelector(item)
select item).ToList();
}
e usalo allo stesso modo:
var ordersOrderedByDate = OrderBy(orders, x => x.OrderDate);
Che è un modo stupido, complesso e superfluo per fare uno stile LINQ "OrderBy", ma può darti un'idea di come può essere implementato in modo generico