C# 从另一个项目列表中按ID选择项目-不能在LINQ to SQL中使用本地序列

C# 从另一个项目列表中按ID选择项目-不能在LINQ to SQL中使用本地序列,c#,sql,sql-server,linq,linq-to-sql,C#,Sql,Sql Server,Linq,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 clientAdress

当我试图从另一个表中引用的表中获取项目列表时,出现此错误。相当于第三行:

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();
不幸的是,我遇到了一个运行时错误:

本地序列不能用于查询的LINQ到SQL实现 除Contains()运算符之外的其他运算符


任何帮助都将不胜感激。

最后,我终于明白了这一点。由于无法在LINQ to SQL中使用
.Any()
,因此我们必须进行两次LINQ查询,而不是一次

第一个用于获取必须由第二个查询的谓词匹配的ID列表:

IList<int> clientAddressIds = clientAdresses.Select(clientAddress => clientAddress.ClientAdresseID).ToList();
IList clientAddressId=clientAddresses.Select(clientAddress=>clientAddress.clientAddresseId.ToList();
第二个查询实际获取我们首先需要的项目列表:

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

@JAT,使用
Contains()
将需要对查询进行大量更改,不是吗?是的,我删除了注释