可能重复:
动态 LINQ OrderBy
我有一个自定义排序选项列表,这些选项从客户端网格控件(如果您想知道的话是 KendoUI 网格)传递给服务器。这些排序选项具有作为字符串排序的属性。我编写了一个 switch 方法,它将检查排序对象的值并应用适当的 LINQ。
private IQueryable<Report> SortReports(IQueryable<Report> reports, KendoSort sort)
{
switch (sort.Field)
{
case "name":
return sort.Dir == "asc" ? reports.OrderBy(x => x.Name) : reports.OrderByDescending(x => x.Name);
case "description":
return sort.Dir == "asc" ? reports.OrderBy(x => x.Description) : reports.OrderByDescending(x => x.Description);
default:
return sort.Dir == "asc" ? reports.OrderBy(x => x.Id) : reports.OrderByDescending(x => x.Id);
}
}
这工作正常,但看起来很丑。我如何通过反射来做到这一点,这样我就不必为我想要使用的每种类型的实体编写自定义函数?如果无论实体是什么,我都可以只使用一个函数来执行此操作,那就太好了。