Avoid switch case -linq
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Dynamic LINQ OrderBy
1 2 3 4 5 6 7 | switch (sort) { case"Title": queryResults = queryResults.OrderBy(r => r.Title); break; default: queryResults = queryResults.OrderBy(r => r.LastName); break; |
我有什么办法可以摆脱上面的开关块吗?
我能做些什么吗?
1 2 3 | queryResults = queryResults.OrderBy(r => r."sort"); or queryResults = queryResults.OrderBy(r => r.sort); |
如果您想完全动态地进行此操作,可以使用一些反射(简单示例):
1 2 | string prop ="Title"; var q = queryResults.OrderBy(x => x.GetType().GetProperty(prop).GetValue(x, null)); |
不过,我不认为这是最好的解决办法。这对您来说是否真的有意义取决于您从哪里获得属性名(如果您也从反射中获得,或者不从反射中获得),以及有多少属性。
应该这样做
1 | queryResults = queryResults.OrderBy(r => sort =="Title" ? r.Title : r.LastName) |
你可以用Dynamclinq。我已经一年多没有碰过了,但我有了预期的结果。您的代码将更改为:
哦,太酷了,这也是个裸体套餐