除了Contains运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。
我从以下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));
交叉会抛出这个错误吗?
答案 0 :(得分: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)))
那[应该]有用。