【问题标题】:Extract input parameter name from lambda expression从 lambda 表达式中提取输入参数名称
【发布时间】:2017-11-13 19:11:30
【问题描述】:

我正在使用system.linq.dynamic.core 和休眠的linq。现在我想将两个动态 linq 表达式传递给一个方法。一个用于父表,一个用于连接的子列表。 两个表达式的输入参数都是随机的,所以表达式可以是

"x => x.Name == \"Wick\" "

或者

" k => k.FirstName = \"John\" "

现在我知道,使用动态 linq,您可以将字符串表达式解析为 LambdaExpression。

如果我想创建一个连接,则连接表必须有一个别名。因此,我想从表达式中提取“x”或“k”。 这可能吗?

【问题讨论】:

    标签: linq expression-trees linq-to-nhibernate dynamic-linq


    【解决方案1】:

    LambdaExpression 具有a Parameters property,您可以使用它来访问有关 lambda 参数的信息。在你的情况下,这可能是这样的:

    string GetParameterName(LambdaExpression expression) => expression.Parameters.Single().Name;
    

    【讨论】:

    • 正是我想要的!
    • Hmmm.. 使用了动态 linq 的 ParseLambda 方法,它删除了我的输入参数...有没有机会让它留在那里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多