9

我有一个这样的函数:

 Func<MyClass, bool> func = x=>Id == 5;

我如何将其转换为:

 Expression<Func<MyClass, bool>>
4

3 回答 3

13

你可以写:

Expression<Func<MyClass,bool>> expr = x=>Id == 5;

这将设置expr为 的表达式树Id == 5

如果你这样做:

Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);

然后这将设置expr为调用func的表达式树,而不是主体的表达式树func

于 2013-02-18T11:51:23.763 回答
6

试试这个:

Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
于 2013-02-16T05:48:10.270 回答
2

您可以创建一个表达式来表示对您创建的委托的调用。但大多数时候,当您使用Expressions 时,您这样做是为了了解代码的作用(例如,将其转换为 SQL)。而且你不能用一个表达式来调用一个不透明的函数。

于 2013-02-16T14:23:39.777 回答