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

Extract input parameter name from lambda expression

我正在与 system.linq.dynamic.core 合作 和 nhibernate linq。现在我想将两个动态 linq 表达式传递给一个方法。一份用于父 table,一份用于加入的子列表。 两个表达式的输入参数都是随机的,所以表达式可以是

"x => x.Name == \"灯芯\" "

或者

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

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

如果我想创建连接,则必须为连接的连接设置别名 table。因此,我想从表达式中提取 'x' 或 'k'。 这可能吗?

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

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