为什么不能转换为表达式树?

时间:2015-03-12 15:30:10

标签: c# .net linq

我尝试为linq函数Any构建一个匿名函数。我不明白为什么不能这样做:

found = db.Label.Any(lb => {
    var shortNames = lb.lbShortName.Split('/').ToList();

    bool foundShortName = false;
    foreach (var shortName in shortNames)
    {
        if (String.Compare(shortName, name, StringComparison.OrdinalIgnoreCase) == 0)
        {
            foundShortName = true;
            break;
        }
    }
    return foundShortName;

或者更好,我不明白为什么是Expression(Func(,))而不是Func(,)                     });

1 个答案:

答案 0 :(得分:1)

您必须使用Linq提供程序,如LINQ-to-SQL或Entity Framework。它试图将表达式转换为类似SQL查询的东西,但这并不简单。如果db.Label是普通IEnumerable<>而不是IQueryable<>,这样就行了。