LINQ to SQL 錯誤:本地序列使用限制
在LINQ to SQL 中,查詢運算子不能使用除Contains() 之外的本地序列操作員。當嘗試在 SQL 來源和本機來源之間執行聯結時,通常會出現此錯誤。
提供的程式碼片段示範了 Shop.Sections 表與本機集合 obj.SectionObjects 之間的連結。但是,此操作無效,導致錯誤:「本地序列不能在LINQ to SQL 查詢運算子實作中使用,除了Contains() 運算子。」
解決方案:Data Retrieval Before Join
解決方案:Data Retrieval Before Joinvar 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中文網其他相關文章!