方法'Boolean Contains(System.String)'没有支持的SQL转换

时间:2009-03-09 05:34:43

标签: sql linq-to-sql

“方法”布尔包含(System.String)'没有支持的SQL转换。“

查询是IsQueryable但是这停止了工作:

foreach (string s in collection1)
{
       if (s.Length > 0)
                {
                    query = query.Where(m => m.collection2.Contains(s));

                }
}

更新:当我使查询“ienumerable”而不是iqueryable时它会起作用。使用linq而不是迭代循环来获得相同结果的方法是什么?

4 个答案:

答案 0 :(得分:22)

试试这个:

query = query.Where(m => m.collection2.ToList().Contains(s));
                                       ^^^^^^^^

答案 1 :(得分:2)

从stackoverflow看一下这个answer

看起来生成的查询需要访问数据库的内容 没有办法到达,因为信息在记忆中。

答案 2 :(得分:1)

由于m.collection2在数据库中,因此请勿使用Contains。使用任何

m.collection2.Any(x => x == s)

答案 3 :(得分:0)

看起来您看到的错误来自集合集合2.您是否尝试将m.collection2包装在另一个返回true或false的函数中?这是LINQ语法吗?