我有一种感觉,我已经知道这个问题的答案了。
我有一个常见但复杂的表达式,我想在多个位置重用代码。我想使用一个返回带有一些代码的 Func 的函数:
public static Func<MyClass, bool> GetCheck()
{
return (x) => x.Value > 10;
}
似乎很容易。我遇到的问题是当我将它应用于 LINQ To Entities 中使用的 LINQ 表达式时。我收到一条错误消息,指出不支持调用。我明白为什么。我不知道是否有办法解决这个问题。我想说...
var check = GetCheck();
IQueryable<MyClass> results = MyClasses.Where(y => check(y));
...并让表达式树检查器意识到 Func 中发生的所有事情在 LINQ To Entities 和 DB 中都是完全合法的。看起来它应该是内联的。
我能做些什么来实现这一点吗?允许这样做的代表的任何形式的声明?