C#Linq加入两个DataTables [英] C# Linq join two DataTables

查看:126
本文介绍了C#Linq加入两个DataTables的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个数据表Table1和Table2我需要使用c#linq将这两个DataTable连接到一个。





I have two datatables Table1 and Table2 i need to join these two DataTables in to one using c# linq.


Table1:
--------
EmpName
Name1
Name2
Name3
Name4
Name5

Table2:
--------
EmpName  Grade
Name1     2
Name2     2
Name3     2
Name4     5

Expected Output:
----------------
EmpName  Grade
Name1    2
Name2    2
Name3    2
Name4    5
Name5    NULL

推荐答案

我建​​议你阅读这里的连接 - 加入两个数据在ASP.Net C#中使用LINQ的表 [ ^ ]。
I would suggest you to read about joins here - Join Two DataTables Using LINQ In ASP.Net C#[^].


尝试使用以下代码:

Try with below code:
DataTable dt = new DataTable();
DataRow dr = null;
dt.TableName = "Emp";

dt.Columns.Add("EmpName", typeof(string));

dr = dt.NewRow();
dr["EmpName"] = "Name1";
dt.Rows.Add(dr);

DataRow dr1 = null;
dr1 = dt.NewRow();
dr1["EmpName"] = "Name2";
dt.Rows.Add(dr1);

DataRow dr2 = null;
dr2 = dt.NewRow();
dr2["EmpName"] = "Name3";
dt.Rows.Add(dr2);

DataRow dr3 = null;
dr3 = dt.NewRow();
dr3["EmpName"] = "Name4";
dt.Rows.Add(dr3);

DataRow dr4 = null;
dr4 = dt.NewRow();
dr4["EmpName"] = "Name5";
dt.Rows.Add(dr4);

DataTable dt2 = new DataTable();

dt2.TableName = "EmpGrade";
dt2.Columns.Add("EmpName", typeof(string));
dt2.Columns.Add("Grade", typeof(int));

DataRow drgrade = null;
drgrade = dt2.NewRow();
drgrade["EmpName"] = "Name1";
drgrade["Grade"] = 2;
dt2.Rows.Add(drgrade);

DataRow drgrade1 = null;
drgrade1 = dt2.NewRow();
drgrade1["EmpName"] = "Name2";
drgrade1["Grade"] = 2;
dt2.Rows.Add(drgrade1);

DataRow drgrade2 = null;
drgrade2 = dt2.NewRow();
drgrade2["EmpName"] = "Name3";
drgrade2["Grade"] = 2;
dt2.Rows.Add(drgrade2);

DataRow drgrade3 = null;
drgrade3 = dt2.NewRow();
drgrade3["EmpName"] = "Name4";
drgrade3["Grade"] = 5;
dt2.Rows.Add(drgrade3);

var JoinResult = (from p in dt.AsEnumerable()
				  join t in dt2.AsEnumerable()
				  on p.Field<string>("EmpName") equals t.Field<string>("EmpName") into tempJoin
				  from leftJoin in tempJoin.DefaultIfEmpty()
				  select new
				  {
					  EmpName = p.Field<string>("EmpName"),					 
					  Grade = leftJoin == null ? 0 : leftJoin.Field<int>("Grade")  
				  }).ToList();


您需要做的就是 lef join 。请参阅:

如何:执行左外连接(C#编程指南) [ ^ ]

查询表达式语法示例:连接运算符(LINQ to DataSet) [ ^ ]

方法 - 基于查询语法示例:加入(LINQ to DataSet) [ ^ ]



如需了解更多信息,请参阅: LINQ to DataSet中的查询 [ ^ ]
All you need to do is called lef join. See:
How to: Perform Left Outer Joins (C# Programming Guide)[^]
Query Expression Syntax Examples: Join Operators (LINQ to DataSet)[^]
Method-Based Query Syntax Examples: Join (LINQ to DataSet)[^]

For further information, please see: Queries in LINQ to DataSet[^]


这篇关于C#Linq加入两个DataTables的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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