我需要将两个lambda表达式结合起来,使第二个表达式“包含”第一个表达式。
我搜索了很多,但没有找到任何明确的答案...
我试图做的是: 将第一个表达式“expression1”作为参数传递给一个方法,并且仅用于定义第二个lambda表达式必须操作的字段或属性。
简单地说,我正在尝试做以下事情:
换句话说,我想要得到:
我需要这样做,因为不总是会调用
我试图将expression1编译为
所以我的问题是:是否有一种方法可以仅组合两个表达式的主体,如何实现?
感谢您的提前帮助!
我试图做的是: 将第一个表达式“expression1”作为参数传递给一个方法,并且仅用于定义第二个lambda表达式必须操作的字段或属性。
简单地说,我正在尝试做以下事情:
// simple field selector :
Expression<Func<T, string>> expression1 = obj => obj.field;
// trying to use the field selector in 2nd expression :
Expression<Func<T, bool>> e2 = obj => [[Result of expression1]].Equals("myValue");
换句话说,我想要得到:
Expression<Func<T, bool>> e2 = obj => obj.field.Equals("myValue");
我需要这样做,因为不总是会调用
Equals()
方法,而是会调用许多不同的方法。我试图将expression1编译为
Func<T, string>
,以便在expression2中调用此函数,但由于我正在使用LinQ,所以我会得到一个异常,因为LinQ不支持Invoke节点类型。所以我的问题是:是否有一种方法可以仅组合两个表达式的主体,如何实现?
感谢您的提前帮助!