包含另一个表达式的一个大表达

时间:2013-11-11 08:48:13

标签: c#

我是表达树的新手,我正在寻找一个可能包含其他表达式的表达式,并可能在我的代码中的不同位置动态地将这些表达式添加到自身。

看一下这个例子:

public void DoSomething()
{
   var ex1 = Expression.Call(....);

   // something else happens here

   var ex2 = Expression.Loop(...);

  // again something else

  foreach(var item in items)
  {
     var ex3 = Expression.And(...);
  }

  var everythingInOneExpression = .. // here I would like to have all expressions in one
}

正如您在伪代码中看到的那样,正在创建表达式,其中一个甚至在foreach中,我希望最终将所有表达式放在一个大表达式中。

很难解释,但是那个大的有点像一个列表,它通过它的子表达式运行并执行它们,或类似的东西。它不是一个列表,而是一个表达式。 :)

有这么大的表达吗?我希望你能跟着我这个。

修改

大的应该运行它的项目/表达式并执行它们用和运算符链接它们。

2 个答案:

答案 0 :(得分:0)

我认为PredicateBuilder正是您所寻找的。检查this。如果您想深入了解linq表达式树,您还可以看到this MSDN参考。

希望我帮忙!

答案 1 :(得分:0)

您可以使用Expression.BlockExpression.Lambda,可以从表达式列表中创建它们。