1

我有两个DataTables,其中我只需要在 final 中使用不同的列值,DataTable如下所示

数据表(DT1)

ID  Name    Salary
1   ABC     2000
2   XYZ     4000
3   Suresh  6000

数据表(DT2)

ID  Name    Salary
1   ABC     3000
2   XYZ     5000
3   Suresh  6000

数据表(DT3)

ID  Salary(DT1) Salary(DT2)
1   2000             3000
2   4000             5000

如何使用 Datatables 上的 linq 查询或任何其他方式来完成此操作?我尝试循环并比较两个数据表的每列值,但我不知道如何存储在最终的数据表中。

4

1 回答 1

0

首先我们需要连接表(假设 ID 具有 PK/FK 关系),然后比较值并将它们放入新表中。

    var unMatchedRows = from DataRow dt1Row in dt1.Rows
                        join DataRow dt2Row in dt2.Rows
                        on dt1Row["id"] equals dt2Row["id"]
                        where Convert.ToDoubl(dt1Row["salary"]) != Convert.ToDouble(dt2Row["salary"])
                        select new { dt1Row, dt2Row };

这为我们提供了在工资不同的 ID 上连接的 DataRow 对象的集合。现在我们只需要用这些行填充一个新的 DataTable。

    foreach (var m in unMatchedrows)
    {
        dt3.ImportRow(m);
    }

值得注意的是,DT3 需要与其他两个表具有相同的架构。这只会将不匹配的行放在新表中。有几种方法可以做到这一点,我现在不在 IDE 前进行测试,但这应该可以帮助您。希望这可以帮助!

于 2013-04-23T14:34:42.823 回答