您可以将lambda表达式转换为特定的目标委托类型,但是为了确定条件表达式的类型,编译器需要知道第二个操作数和第三个操作数的类型。虽然它们都只是“
lambda表达式”,但它们之间没有转换,因此编译器无法做任何有用的事情。
我不建议使用分配,但是-强制转换更为明显:
Func<Order, bool> predicate = id == null ? (Func<Order, bool>) (p => p.EmployeeID == null) : p => p.EmployeeID == id;
请注意,您只需要为一个操作数提供它,这样编译器就可以从另一个lambda表达式执行转换。



