4

本地序列不能在查询运算符的 LINQ to SQL 实现中使用,但 Contains 运算符除外。

我从以下 linq 查询中收到此错误:

List<Something> results = new List<Something>(items
.Where(w => selecteditems.Count == 0 || w.ops.Intersect(selecteditems).Count() > 0)
.ToList()
.OrderBy(a => a.FirstNumber)
.OrderBy(b => b.SecondNumber));

相交会引发此错误吗?

4

1 回答 1

5

查询提供程序不知道如何转换w.ops.Intersect(selecteditems)为 SQL 查询。

如果selecteditems是来自同一查询提供程序的另一个查询,那么它可能能够翻译它们,或者如果整个操作是在 Linq-to-Objects 中完成的,而不是在 Linq-to-SQL 中完成的,那就没问题了。

根据错误消息,它知道如何对此类对象执行的唯一操作是Contains. 您可以重新处理查询以使用它:

.Where(w => selecteditems.Count == 0 || 
    w.ops.Any(op => selecteditems.Contains(op)))

那[应该]工作。

于 2013-09-10T20:36:41.733 回答