尝试构建动态lambda表达式以基于属性进行选择

时间:2012-11-11 12:21:59

标签: c# linq dynamic lambda expression

尝试构建动态Lambda表达式,以根据用户提供的属性名称进行选择,但会收到错误“为lambda声明提供的参数数量不正确”。我正试图解决这个问题:() => myObj.propName

这是我的代码的最新版本:

    var parameter = Expression.Parameter(typeof(myObjType), propName);
    MemberExpression exp = Expression.PropertyOrField(parameter, propName);
    var func = Expression.Lambda<Func<string>>(exp, parameter).Compile();

最后一行发生错误。我已经在SO和其他地方看到了一些类似的东西,这些东西让我走得很远,但无法弄清楚我做错了什么。现在,我正在尝试使用的所有属性都是字符串。

感谢。

1 个答案:

答案 0 :(得分:0)

要使用动态表达式(作为字符串)进行查询,您可以使用Microsoft的Scott Gu的Dynamic LINQ

检查this答案以获取详细信息。

Dynamic Linq library将复杂的表达式。*调用抽象为简单的Linq语法,将属性名称接受为string