我有两个具有不同数据的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和这些条件中的任何一个? 请建议我正确的方法吗?
答案 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。