比较两个数据表,并有效地将不同的数据绘制到新的数据表中

本文关键字:数据表 数据 绘制 有效地 两个 比较 | 更新日期: 2023-09-27 18:34:01

本质上我有两个数据表

数据表1

PirateShipID  PirateShipPreference
123            1
122            2
121            3

和 DataTable 2(它具有不同的命名列,但数据类型相同。

RGPirateShipID PirateShipPreferenceType
123             1
122             1
121             3

我想抓取所有记录

PirateShipID == RGPirateShipID && PirateShipePreference != PirateShipPreferenceType

理想情况下使用 Linq,因为我相信这将是我实现这一目标的最快方法

        var idsNotinPirates = from r in DataTable1.AsEnumerable()
                          //Get all records that don't match on preference
                          where DataTable2.AsEnumerable().Any(r2 => r["PirateShiptID"] == r2["RGPirateShipID"] && r["PirateShipPreference"] != r2["PirateShipPreferenceType"])
                          select r;

但是,DataTable 1 大约有 10k 个盗版,Datatable 2 有 100 万个。

应用程序需要很长时间才能完成上述操作。

我怎样才能提高工作效率?

比较两个数据表,并有效地将不同的数据绘制到新的数据表中

我相信你应该做这样的事情:

var query = from r in DataTable1.AsEnumerable()
            join r2 in DataTable2.AsEnumerable() on r["PirateShipID"] equals r2["RGPirateShipID"] into joinedTable
            where joinedTable["PirateShipPreference"] != joinedTable["PirateShipPreferenceType"]
            select r