可能重复:
动态LINQ OrderBy
switch (sort) {
case "Title":
queryResults = queryResults.OrderBy(r => r.Title);
break;
default:
queryResults = queryResults.OrderBy(r => r.LastName);
break;
Run Code Online (Sandbox Code Playgroud)
有什么办法可以摆脱上面的开关块吗?
我可以做一些事情:
queryResults = queryResults.OrderBy(r => r."sort");
or
queryResults = queryResults.OrderBy(r => r.sort);
Run Code Online (Sandbox Code Playgroud)
如果你想完全动态地做这个,你可以使用一些反射(简单的例子):
string prop = "Title";
var q = queryResults.OrderBy(x => x.GetType().GetProperty(prop).GetValue(x, null));
Run Code Online (Sandbox Code Playgroud)
不过,我不认为这是最好的解决方案.这对你来说真的有意义取决于你从哪里获得属性名称(如果你从反射中得到它,或者没有)以及有多少属性.
这应该做到这一点
queryResults = queryResults.OrderBy(r => sort == "Title" ? r.Title : r.LastName)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2359 次 |
| 最近记录: |