【发布时间】:2017-03-01 10:59:48
【问题描述】:
我有两个数据表,它们从两个不同的来源获取数据。我想要一个新的 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")));
【问题讨论】:
-
那么您是否想要 Table1 中所有在 Table2 中没有匹配 CarReg 的记录?
-
@YawarMurtaza 是的,我想要 Table1 中所有在 Table2 中没有匹配 CarReg 的记录。感谢您用一个简单的英语句子来说明这一点。
标签: c# winforms linq linq-to-dataset system.data.datatable