1

我有一种感觉,我已经知道这个问题的答案了。

我有一个常见但复杂的表达式,我想在多个位置重用代码。我想使用一个返回带有一些代码的 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 中都是完全合法的。看起来它应该是内联的。

我能做些什么来实现这一点吗?允许这样做的代表的任何形式的声明?

4

1 回答 1

2

由于您正在查询 anIQueryable<>然后您应该尝试以下操作:

public static Expression<Func<MyClass, bool>> GetCheck()
{
    return (x) => x.Value > 10;
}
于 2012-09-21T00:23:53.617 回答