我有这样的Func:
Func<MyClass, bool> func = x=>Id == 5;
如何将其转换为:
Expression<Func<MyClass, bool>>
答案 0 :(得分:11)
你可以写:
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
正文的表达式树。
答案 1 :(得分:3)
试试这个:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
答案 2 :(得分:2)
您可以创建一个表达式,表示对您创建的委托的调用。但大多数情况下,当您使用Expression
时,您可以这样做以了解代码的作用(例如,将其转换为SQL)。你不能用表达式来调用不透明的函数。