这个问题已经在这里有了答案:
已关闭8年。
switch (sort) {
case "Title":
queryResults = queryResults.OrderBy(r => r.Title);
break;
default:
queryResults = queryResults.OrderBy(r => r.LastName);
break;
有什么办法可以摆脱上面的开关块?
我可以做点什么:
queryResults = queryResults.OrderBy(r => r."sort");
or
queryResults = queryResults.OrderBy(r => r.sort);
最佳答案
如果您想完全动态地进行此操作,则可以使用一些反射(简单的示例):
string prop = "Title";
var q = queryResults.OrderBy(x => x.GetType().GetProperty(prop).GetValue(x, null));
无论如何我都不认为这是最好的解决方案。这对您是否真正有意义取决于您从哪里获得属性名称(如果您也从反射获得它)以及有多少个属性。