从lambda表达式中提取输入参数名称

时间:2017-11-13 19:11:30

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

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

“x => x.Name == \”Wick \“”

或者

“k => k.FirstName = \”John \“”

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

如果我想创建连接,则必须为连接表添加别名。所以从表达式中我想提取'x'或'k'。 这可能吗?

1 个答案:

答案 0 :(得分:4)

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

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