我已经阅读了一堆关于将 LINQ 表达式放在一起的文章,但它们似乎只涵盖了 and's 和 or's。我已经实施了这个解决方案:
http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities-combining-predicates.aspx
如何编写此代码以使其正常工作?
Expression<Func<Crop, bool>> chooseOranges = crop => crop.IsOrange;
Expression<Func<Farm, bool>> selectFarm = farm => farm.HasCows;
selectFarm = selectFarm.And(farm => farm.Crops.Any(chooseOranges);
它可以编译,但在运行时会引发 .NET 1025 错误。如果我将 chooseOranges 替换为文字文本,它会起作用,但 chooseOranges 是使用业务逻辑逐个构建的。我上面链接的代码似乎依赖于各种 Expression.Foo() 函数,但我找不到一个有用的函数。