这个问题已经在这里有了答案:




已关闭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));

无论如何我都不认为这是最好的解决方案。这对您是否真正有意义取决于您从哪里获得属性名称(如果您也从反射获得它)以及有多少个属性。

10-06 12:04