使用OR条件的LINQ到数据表连接查询

本文关键字:数据表 连接 查询 LINQ OR 条件 使用 | 更新日期: 2023-09-27 18:18:13

我有两个具有不同数据的数据表,两者中的常见列都是quantity和Itemcode。我想将两个表连接在一起,其中两个字段,(DataTable1.itemcode=DataTable2.itemcode)和(DataTable1.quantity=DataTable2.quantity)或((DataTable1.quantity+1)=DataTable2.quantity)或((DataTable1.quantity+2)=DataTable2.quantity)。我怎么用LINQ写这个呢?

如果项目代码相同,数量相等,超过1或2,那么我应该得到合并结果。

我尝试使用匿名对象,但这是为AND条件和OR条件没有实现,所以只有itemcode和这些条件中的任何一个在同一时间实现?请告诉我做这件事的正确方法。

使用OR条件的LINQ到数据表连接查询

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

[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。