C# 无法在LINQ to SQL中使用本地序列

C# 无法在LINQ to SQL中使用本地序列,c#,linq-to-sql,C#,Linq To Sql,除Contains运算符外,查询运算符的LINQ到SQL实现中不能使用局部序列 我从以下linq查询中得到此错误: List<Something> results = new List<Something>(items .Where(w => selecteditems.Count == 0 || w.ops.Intersect(selecteditems).Count() > 0) .ToList() .OrderBy(a => a.FirstNumb

除Contains运算符外,查询运算符的LINQ到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));
列表结果=新列表(项目)
.Where(w=>selecteditems.Count==0 | | w.ops.Intersect(selecteditems.Count()>0)
托利斯先生()
.OrderBy(a=>a.FirstNumber)
.OrderBy(b=>b.SecondNumber));

intersect是否会抛出此错误?

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

如果
selecteditems
是来自同一查询提供程序的另一个查询,那么它可能能够将它们转换,或者如果整个操作是在Linq中执行的,而不是在Linq中执行的,那么就可以了

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

.Where(w => selecteditems.Count == 0 || 
    w.ops.Any(op => selecteditems.Contains(op)))
这[应该]行得通。

看看这个问题: