【问题标题】:Local sequence cannot be used in LINQ to SQL本地序列不能在 LINQ to SQL 中使用
【发布时间】:2013-09-10 20:32:59
【问题描述】:

本地序列不能在查询运算符的 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));

相交会抛出这个错误吗?

【问题讨论】:

标签: c# linq-to-sql


【解决方案1】:

查询提供程序不知道如何将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)))

这[应该]有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多