LINQ to DataTable使用OR条件加入查询

时间:2014-08-17 03:58:02

标签: c# linq

我有两个具有不同数据的DataTable,两者中的常见列是数量和项目代码。我想将两个表连接在一起,其中两个字段是(DataTable1.itemcode = DataTable2.itemcode)AND(DataTable1.quantity = DataTable2.quantity)OR((DataTable1.quantity + 1)= DataTable2.quantity)OR((DataTable1。数量+ 2)= DataTable2.quantity)。我如何在LINQ中写这个?

如果商品代码相同且数量相等,则超过1或2,那么我应该加入结果。

我尝试使用匿名对象,但这是针对AND条件而OR条件未实现,所以一次只实现了itemcode和这些条件中的任何一个? 请建议我正确的方法吗?

1 个答案:

答案 0 :(得分:3)

您必须使用以下语法访问数据集的字段:

[DataTable Name].Field<string>(indexNo or ColumnName)

因此,您可以编写以下linq以在两个数据表之间建立连接:

from t1 in dataTable.AsEnumerable()
//join between two tables
join t2 in dataTable2.AsEnumerable() on t1.Field<string>(0) equals t2.Field<string>(0)
//where conditions
where t1.Field<string>(0) == [value]
//select clause
select t1.Field<string>(colmNo)

您还可以通过创建扩展方法将两个数据表转换为IEnumerable。