我的(如果你想知道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);
}
}
這工作正常,但似乎很難看。我怎麼可以用反射來做到這一點,以便我不必爲每種類型的實體編寫自定義函數?如果我可以只用一個單獨的函數來完成這個任務,那將是非常好的。
我沒有看到這裏會做什麼反射,但是你可以用一個枚舉來代替你的字符串。 – LightStriker
[動態LINQ OrderBy](http://stackoverflow.com/questions/41244/dynamic-linq-orderby) –