如何将两个DataTable与不同列数进行比较? [英] How to compare two DataTable with different number of columns?
问题描述
如果我想比较两个数据表并获得新数据表的差异,但我想保留一个未比较的列。
例如:
优先数据表
名称|号码
---- | -------
Jude | 12
马克| 14
Bin | 15
秒数据表
名称
------
Jude
Robin
Kamil
数据表必须具备:
名称|号码
------- | ----------
马克| 14
Bin | 15
你的样本数据
DataTable dt1 = new DataTable();
dt1.Columns.Add( 名称, typeof ( string ));
dt1.Columns.Add( Number, typeof ( int ));
dt1.Rows.Add( Jude, 12);
dt1.Rows.Add( Mark, 14);
dt1.Rows.Add( Bin, 15);
DataTable dt2 = new DataTable();
dt2.Columns.Add( 名称, typeof ( string ));
dt2.Rows.Add( Jude);
dt2.Rows.Add( Robin);
dt2.Rows.Add( Kamil);
使用LINQ两个表中无与伦比的名称字段
var filter = 来自 firstDt dt1 .AsEnumerable()
where !( from secondDt in dt2.AsEnumerable() select secondDt [ Name])。包含(firstDt [ Name]。ToString ())
选择 firstDt;
DataTable resultDt = filter.CopyToDataTable();
resultDt(输出)
祝你好运; - )
If I want to compare two datatables and get the difference in new datatable but I want to keep an uncompared column.
example:
first Datatable
Name | Number
---- |-------
Jude | 12
Mark | 14
Bin | 15
second Datatable
Name
------
Jude
Robin
Kamil
the Datatable must have:
Name | Number
-------|----------
Mark | 14
Bin | 15
ur sample data
DataTable dt1 = new DataTable(); dt1.Columns.Add("Name",typeof(string)); dt1.Columns.Add("Number",typeof(int)); dt1.Rows.Add("Jude", "12"); dt1.Rows.Add("Mark", "14"); dt1.Rows.Add("Bin", "15"); DataTable dt2 = new DataTable(); dt2.Columns.Add("Name", typeof(string)); dt2.Rows.Add("Jude"); dt2.Rows.Add("Robin"); dt2.Rows.Add("Kamil");
using LINQ the unmatched 'Name' fields of two tables
var filter= from firstDt in dt1.AsEnumerable() where !(from secondDt in dt2.AsEnumerable() select secondDt["Name"]).Contains(firstDt["Name"].ToString()) select firstDt; DataTable resultDt = filter.CopyToDataTable();
resultDt(Output)
good luck ;-)
这篇关于如何将两个DataTable与不同列数进行比较?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!