用什么表达方法来获取参数?

时间:2011-06-06 08:39:47

标签: c# linq expression-trees

简单的问题。我正在尝试创建一个返回参数的基本lambda表达式。

(i, o) => o

我有第一部分:

ParameterExpression p1 = Expression.Parameter(relationshipItems.ElementType, "i");
ParameterExpression p2 = Expression.Parameter(instanceEntities.ElementType, "o");

最后一部分:

LambdaExpression lambda = Expression.Lambda(p2return, p1, p2);

我使用什么方法来取回参数,可能是一个UnaryExpression(p2return)?

2 个答案:

答案 0 :(得分:3)

只需将正文设置为第二个参数p2即可。你已经有了参考资料。

var p1 = Expression.Parameter(relationshipItems.ElementType, "i");
var p2 = Expression.Parameter(instanceEntities.ElementType, "o");
var body = p2;
var lambda = Expression.Lambda(body, p1, p2);

答案 1 :(得分:0)

例如,为了示例,我们假设p1是一个int而p2是一个字符串,那么这个:

var p1=Expression.Parameter(typeof(int),"i");
var p2=Expression.Parameter(typeof(string),"o");

var lambda=Expression.Lambda(p2,p1,p2);
var function=lambda.Compile() as Func<int,string,string>;
var result=function(10,"hello");

将生成一个返回“o”的函数。 lambda将返回其正文中最后一个表达式中的值,在上面的示例中只是参数p2。