首頁 >資料庫 >mysql教程 >為什麼 LINQ to SQL 在加入本機集合時會拋出「本地序列使用限制」錯誤?

為什麼 LINQ to SQL 在加入本機集合時會拋出「本地序列使用限制」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-27 21:36:15569瀏覽

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

解決方案:Data Retrieval Before Join

var SE = Shop.Sections
            .Where(s => obj.SectionObjects
                           .Select(so => so.SectionId)
                           .Contains(s.SectionId))
            .ToList();
要解決此錯誤,請在嘗試連接之前將SQL 資料檢索到記憶體中。在這種情況下,我們不執行真正的聯接,而是執行「select...where...selectid in」查詢。這可以使用 Contains() 方法來實現:

select * from Sections where sectionId in (...)
此查詢轉換為:

其中 in 子句中的 ID 清單源自本地物件集合。此方法可確保查詢中使用的所有資料都是 SQL 來源的一部分,從而解決了錯誤。

以上是為什麼 LINQ to SQL 在加入本機集合時會拋出「本地序列使用限制」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn