Вам нужно , чтобы передавать строки? Передача делегата Func<T,TResult>
будет быстрой, гибкой и позволит выполнять проверку во время выполнения; проходить в string
не будет.
Вы могли бы даже иметь готовую группу предопределенных делегатов:
var sortedByName = productList.OrderBy(NameSelector);
var sortedByDate = productList.OrderBy(DateCreatedSelector);
var sortedByCustom = productList.OrderBy(p => p.SomeOtherProperty);
// ...
// predefined delegates
public static readonly Func<Product, string> NameSelector = p => p.Name;
public static readonly Func<Product, DateTime> DateCreatedSelector =
p => p.DateCreated;
И, конечно, вы можете обернуть все это в свой собственный метод, если хотите, но этот метод будет излишним однострочным, просто заключая вызов OrderBy
.