LINQ to SQL中不能使用本地序列

时间:2013-09-10 20:32:59

标签: c# linq-to-sql

  

除了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));

交叉会抛出这个错误吗?

1 个答案:

答案 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)))

那[应该]有用。