在linq中执行方法

时间:2010-12-14 08:47:58

标签: c# linq linq-to-entities

是否可以在Linq中执行方法,即

var lst = (from ls in testEntity.Month where ls .Month1.ToString()  == hello() select ls).ToList();

     private string  hello()

        {
            return "8";
        }

我知道Linq不会执行自己,执行此操作时我会收到以下错误

LINQ to Entities无法识别方法'System.String ToString()',并且此方法无法转换为商店表达式。

1 个答案:

答案 0 :(得分:3)

通常,您可以在LINQ中调用方法而不会出现问题。 您在这里遇到的问题特定于LINQ to Entities。 L2E需要将所有方法调用转换为适当的数据库语句,对于您调用它的方法,它不知道如何翻译它。

你可以重写你的hello()函数来返回一个表达式:

public Expression<Func<string>> hello() {
    return () => "8";
}

这样L2E可以翻译语句。如果可行,取决于您的真实代码。