1
4
最好的方法是在
然后可以将该谓词直接传递给
如果要动态组合两个这样的表达式,可以将这两个表达式的代码都写入一个表达式,也可以在单独的表达式中捕获这两个表达式。这变得很复杂,因为您需要每个引用
您可以使用&oerator编写复合谓词,并将其捕获到表达式中:
你问过如何在这样的表达式中调用方法——好吧,那个例子确实调用了一个方法!
它建造了一棵树
因此,您可以在表达式中嵌入某些标准方法调用-它要求LINQ提供程序了解它们。方法
Linq提供者不可能允许您添加自己的扩展来处理额外的方法,但是我不知道有任何支持这一点(显然,如果系统是开源的,您可以添加自己的扩展)。 概括地说,LINQ提供程序需要一个表达式节点树,它可以分析该树,将其转换为其他语言(如SQL),以便在其他上下文(如远程数据库内部)中执行。如果您编写普通的方法,C编译器将把它们编译成低级别的可执行IL,而不是表达式节点。所以这就像一个死胡同:没有内置的工具可以将IL转换回表达式节点。 |