我有一个这样的函数:
Func<MyClass, bool> func = x=>Id == 5;
我如何将其转换为:
Expression<Func<MyClass, bool>>
我有一个这样的函数:
Func<MyClass, bool> func = x=>Id == 5;
我如何将其转换为:
Expression<Func<MyClass, bool>>
你可以写:
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
。
试试这个:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
您可以创建一个表达式来表示对您创建的委托的调用。但大多数时候,当您使用Expression
s 时,您这样做是为了了解代码的作用(例如,将其转换为 SQL)。而且你不能用一个表达式来调用一个不透明的函数。