首页 >数据库 >mysql教程 >为什么 LINQ to SQL 在加入本地集合时会抛出'本地序列使用限制”错误?

为什么 LINQ to SQL 在加入本地集合时会抛出'本地序列使用限制”错误?

Linda Hamilton
Linda Hamilton原创
2024-12-27 21:36:15572浏览

Why Does LINQ to SQL Throw a

LINQ to SQL 错误:本地序列使用限制

在 LINQ to SQL 中,查询运算符不能使用除 Contains() 之外的本地序列操作员。当尝试在 SQL 源和本地源之间执行联接时,通常会出现此错误。

提供的代码片段演示了 Shop.Sections 表与本地集合 obj.SectionObjects 之间的联接。但是,此操作无效,导致错误:“本地序列不能在 LINQ to SQL 查询运算符实现中使用,除了 Contains() 运算符。”

解决方案:Data Retrieval Before Join

要解决此错误,请在尝试连接之前将 SQL 数据检索到内存中。在这种情况下,我们不执行真正的联接,而是执行“select...where...selectid in”查询。这可以使用 Contains() 方法来实现:

var SE = Shop.Sections
            .Where(s => obj.SectionObjects
                           .Select(so => so.SectionId)
                           .Contains(s.SectionId))
            .ToList();

此查询转换为:

select * from Sections where sectionId in (...)

其中 in 子句中的 ID 列表源自本地对象集合。此方法可确保查询中使用的所有数据都是 SQL 源的一部分,从而解决了错误。

以上是为什么 LINQ to SQL 在加入本地集合时会抛出'本地序列使用限制”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn