比较两个DataTable并显示LINQ中另一个数据表的差异 [英] Compare two DataTables and Display the differences in another datatable in LINQ

查看:122
本文介绍了比较两个DataTable并显示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 on id, then to compare weights:
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆