当我尝试从另一个表中引用的表中获取项目列表时,我收到此错误。相当于第三行:
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 to SQL的查询实现 运算符除了Contains()运算符
非常感谢任何帮助。
答案 0 :(得分:0)
最后,我已经弄明白了。由于在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();