簡體   English   中英

通過ID從另一個項目列表中選擇項目-本地序列不能在LINQ to SQL中使用

[英]Select items by ID from another list of items - Local sequence cannot be used in LINQ to SQL

當我嘗試從另一個表中引用的表中獲取項目列表時,出現此錯誤。 相當於第三行:

select ID_CLIENT from tb_client where cli_nom = 'John Doe'
select ClientAdresseID from tb_client_adresse where clientId = 3120 -- returns items 342, 343, 344
select * from tb_client_adresse_type where clientAdresseId IN (342, 343, 344)

我使用兩個lambda表達式編寫了這個簡單的LINQ查詢:

var clientAddresseTypes =
    DataContext.ClientAdresseTypes.Where(x => clientAdresses.Any(y => y.ClientAdresseID == x.ClientAdresseID)).ToList();

不幸的是,我收到一個運行時錯誤:

除Contains()運算符外,不能在LINQ to SQL實現中使用本地序列查詢運算符

任何幫助將不勝感激。

最后,我已經弄清楚了。 由於在LINQ-to-SQL中無法使用.Any() ,因此我們必須進行兩個LINQ查詢而不是一個。

第一個獲取必須與第二個查詢的謂詞匹配的ID列表:

IList<int> clientAddressIds = clientAdresses.Select(clientAddress => clientAddress.ClientAdresseID).ToList();

第二個查詢實際上首先獲得我們想要的項目列表:

IList<ClientAdresseType> clientAddresseTypes = DataContext.ClientAdresseTypes.Where(clientAddressType => clientAddressIds.Contains(clientAddressType.ClientAdresseID)).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM