我有两个 DataTables 从两个不同的来源获取数据。我想要一个新的 DataTable Table3,其中只有没有匹配 Table2 行的 Tables1 行。我的两个数据表具有不同的结构,如下所示。但是,它们都共享相同的主键 - CarReg。因此,我想使用 CarReg 列比较行并返回 Table1 中但不在 Table2 中的所有行。我返回的 Table3 DataTable 将具有与 Table1 相同的结构。
Table1.Columns.Add("CarReg", typeof(string));
Table1.Columns.Add("Site", typeof(string));
Table1.Columns.Add("Route", typeof(double));
Table1.Columns.Add("Driver", typeof(string));
Table1.Columns.Add("StartingDate", typeof(string));
Table2.Columns.Add("CarReg", typeof(string));
Table2.Columns.Add("SITE DESC", typeof(string));
Table2.Columns.Add("Route DESC", typeof(double));
Table2.Columns.Add("Driver", typeof(string));
Table2.Columns.Add("KILOS", typeof(string));
我已经尝试过以下方法,但是,我从第一个表 Table1 中获取所有记录。我只需要获取 Table1 中但不在 Table2 中的记录。因此,例如,如果 Table1 有 20 条记录,Tables2 有 15 条记录,我只需要 5 条记录。请帮忙。
var recordsNotInB = TableA.AsEnumerable().Select(r =>r.Field<string>("CarReg").Except(TableB.AsEnumerable().Select(r => r.Field<string>("CarReg")));