1

尝试构建动态 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 和其他地方看到了一些类似的事情,这些事情让我走到了这一步,但无法弄清楚我做错了什么。目前,我尝试使用的所有属性都是字符串。

谢谢。

4

1 回答 1

0

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

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

Dynamic Linq 库将看起来复杂的 Expression.* 调用抽象为简单的 Linq 语法,该语法接受 Property Name 为string.

于 2012-12-29T18:01:48.663 回答