C#Linq加入两个DataTables [英] C# Linq join two DataTables
本文介绍了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屋!
查看全文