如何将Func <T,bool>转换为Expression <Func <T,bool >>

Ari*_*ian 8 c# linq lambda expression-trees c#-4.0

我有这样的Func:

 Func<MyClass, bool> func = x=>Id == 5;
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为:

 Expression<Func<MyClass, bool>>
Run Code Online (Sandbox Code Playgroud)

Sea*_*ean 11

你可以写:

Expression<Func<MyClass,bool>> expr = x=>Id == 5;
Run Code Online (Sandbox Code Playgroud)

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

如果你这样做:

Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
Run Code Online (Sandbox Code Playgroud)

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


Mem*_*zer 6

尝试这个:

Func<MyClass, bool> func = x=>Id == 5;
Expression<Func<MyClass, bool>> expr = mc => func(mc);
Run Code Online (Sandbox Code Playgroud)