基于数组的Linq to SQL多重条件

时间:2015-01-28 15:01:08

标签: c# sql linq

我正在尝试在C#中使用LINQ来执行SQL查询,该查询根据复杂查询选择多个记录。

我有一个Person类列表,其中包含我想要搜索的以下成员: 名字和城市。

通常在SQL中,我会遍历此List并生成以下where语句

Where (Name="Name1" and City="City1") or (Name="Name2" and City="City2") or ...

我想知道如何使用LINQ实现类似的结果。

我可以使用多个查询来执行此操作,但由于网络的延迟以及让数据库自我优化,我希望使用较少的查询。该列表随时将包含不超过100个项目。

修改

如下面的评论所述,Person类只是一个尝试保持简单的例子。我会尝试详细说明我想要完成的工作,看看你是否可以帮助我或提供更好的解决方案。

我有2个感兴趣的数据库表

  • 部件
  • 展示位置

组件包含8个字段和一个ComponentID。每个组件都应该是唯一的。

展示位置包含一个字段列表以及一个返回组件的FK。将有几个展示位置引用数据库中的一个组件记录。

在C#中,我想使用DataContext将一个事务添加到数据库中。我将向数据库添加最多1000个Placement行。如果组件不存在,我将不得不创建它。如果确实存在,我需要获取其ComponentID,以便我可以将Placement链接到Component。

我最近尝试过以下代码: placementGroup有几个成员,其中只需要8个来验证唯一性。应该注意的是,下面列出的8个成员在列表中存储的所有对象之间是唯一的。

List<DBProductionComponent> existingComponents = context.DBProductionComponents.Where(dbc => placementGroup.Any(p => 
            p.ComponentName == dbc.ComponentName &&
            p.LotNumber == dbc.LotNumber &&
            p.Manufacturer == dbc.Manufacturer &&
            p.Package == dbc.PackageName &&
            p.PartNumber == dbc.PartNumber &&
            p.Supplier == dbc.Supplier &&
            p.SupplierPartNumber == dbc.SupplierPartNumber &&
            p.Value == dbc.Value
            )).ToList();

但是得到以下错误:&#34;除了Contains运算符之外,本地序列不能用于查询的LINQ to SQL实现。

0 个答案:

没有答案