[英]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.