【发布时间】:2009-03-09 05:34:42
【问题描述】:
“方法 'Boolean Contains(System.String)' 不支持对 SQL 的转换。”
查询是 IsQueryable 但这停止工作:
foreach (string s in collection1)
{
if (s.Length > 0)
{
query = query.Where(m => m.collection2.Contains(s));
}
}
更新:当我进行查询“ienumerable”而不是 iqueryable 时,它可以工作。使用 linq 而不是通过循环迭代获得相同结果的方法是什么?
【问题讨论】:
-
你能在进入这个循环之前发布你的查询吗?
-
使用纯 LINQ 不会改变任何事情——它也有同样的问题。由于未知的原因,如果 LINQ 将“奇怪”集合检测为 HashSet,它不会将其用作 IEnumerable,用户必须将他/她的集合直接转换为 IEnumerable——然后将 Containts 正确转换为 SQL(我假设为 IN)。
标签: sql linq-to-sql