除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));
Run Code Online (Sandbox Code Playgroud)
交叉会抛出这个错误吗?
查询提供程序不知道如何转换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)))
Run Code Online (Sandbox Code Playgroud)
那[应该]有效.
| 归档时间: |
|
| 查看次数: |
3434 次 |
| 最近记录: |