我有一个函数功能是这样的:如何Func键<T,bool>转换为表达<Func<T,bool>>
Func<MyClass, bool> func = x=>Id == 5;
我怎样才能将其转换为:
Expression<Func<MyClass, bool>>
我有一个函数功能是这样的:如何Func键<T,bool>转换为表达<Func<T,bool>>
Func<MyClass, bool> func = x=>Id == 5;
我怎样才能将其转换为:
Expression<Func<MyClass, bool>>
试试这个:
Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
您可以创建一个表达式来表示对创建的委托的调用。但大多数情况下,当您使用Expression
时,您需要这样做来了解代码的作用(例如将其转换为SQL)。你不能用表达式来调用一个不透明的函数。
你可以这样写:
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
身体表达式树。
表达式是Lambda函数的中间表示形式。 Func本身就是编译的lambda函数。不要以为你可以在两者之间进行转换。你为什么需要这样做? – akhisp 2013-02-16 05:41:50