比较两个DataTable并显示LINQ中另一个数据表的差异 [英] Compare two DataTables and Display the differences in another datatable in LINQ
问题描述
我有两个DataTables,我想显示行。如果两个数据表具有相同的值,则在所有列中标记X或者选择具有最高值的列(例如:DT1:10,DT2:5)
数据表1
id名称重量
1船舶500
2列车600
3架飞机700
4车800
Datatable2
id名称重量
1船500
3飞机600
4车200
我想要的结果是:
Datatable3
id名称重量Datatable1 Datatable2
1船舶500 XX
2火车600 X
3飞机700 XX
4车800 X
我试过以下: -
DataTable Datatable3 =(来自Datatab中的一个) le1.AsEnumerable()
加入b在Datatable2.AsEnumerable()
on [Name]。ToString()等于b [Name]。ToString( )
a [Weight]。ToString()等于b [Weight]。ToString()到g
其中g.Count()!= 1选择一个).CopyToDataTable();
dataGrid1.ItemsSource = Datatable3.DefaultView;
请帮我解决这个问题。在此先感谢
I have two DataTables and I want to display the rows. if both the datatables having the same value, Then mark X in all columns or else select the column with highest value(Eg:DT1: 10,DT2 :5)
Datatable1
id Name Weight
1 Ship 500
2 Train 600
3 Plane 700
4 Car 800
Datatable2
id Name Weight
1 Ship 500
3 Plane 600
4 Car 200
I want the result to be:
Datatable3
id Name Weight Datatable1 Datatable2
1 Ship 500 X X
2 Train 600 X
3 Plane 700 X X
4 Car 800 X
I have tried the below:-
DataTable Datatable3 = (from a in Datatable1.AsEnumerable()
join b in Datatable2.AsEnumerable()
on a["Name"].ToString() equals b["Name"].ToString()
a["Weight"].ToString() equals b["Weight"].ToString() into g
where g.Count() != 1 select a).CopyToDataTable();
dataGrid1.ItemsSource = Datatable3.DefaultView;
Please help me on this. Thanks in advance
推荐答案
如果我理解你,你需要加入id
上的数据,然后进行比较weight
s:
If i understand you well, you need to join data onid
, then to compareweight
s:
DataTable Datatable3 = (from a in Datatable1.AsEnumerable()
join b in Datatable2.AsEnumerable() on a.id equals b.id
select new{
Id = a.id,
Name = a.Name,
Weight = a.Weight
Result = a.Weight == b.Weight ? "x" : ""
}).CopyToDataTable();
好的,尝试这样的事情:
Ok, try something like this:
var qry = from a in dt1.AsEnumerable() join b in dt2.AsEnumerable() on a.Field<int>("id") equals b.Field<int>("id")
select new
{
Id = a.Field<int>("id"),
Name = a.Field<string>("Name"),
Weight = a.Field<int>("Weight"),
Result = a.Field<int>("Weight") == b.Field<int>("Weight") ? "x" : ""
};
foreach(var v in qry)
{
Console.WriteLine ("{0} {1} {2} {3}", v.Id, v.Name, v.Weight, v.Result );
}
这篇关于比较两个DataTable并显示LINQ中另一个数据表的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!