如下代碼中兩個datatable (dt1,dt2), 關聯關系code,ver兩列,如果存在就用dt2.name更新dt1.name,不存在將資料插入dt1中,就像SQL SERVER 中的merge,要求不能回圈
DataTable dt1 = new DataTable();
DataColumn code = new DataColumn("code", typeof(string));
DataColumn ver = new DataColumn("ver", typeof(string));
DataColumn name = new DataColumn("name", typeof(string));
dt1.Columns.Add(code);
dt1.Columns.Add(ver);
dt1.Columns.Add(name);
dt1.Rows.Add(new object[] { '1', '1', "張三" });//添加行
dt1.Rows.Add(new object[] { '2', '1', "a1" });//添加行
dt1.Rows.Add(new object[] { '3', '1', "a2" });//添加行
//for(int i = 0; i <= 1000000; i++)
//{
// dt1.Rows.Add(new object[] { i.ToString(), "張三"+ i.ToString() });//添加行
//}
DataTable dt2 = new DataTable();
DataColumn code1 = new DataColumn("code", typeof(string));
DataColumn ver1 = new DataColumn("ver", typeof(string));
DataColumn name1 = new DataColumn("name", typeof(string));
dt2.Columns.Add(code1);
dt2.Columns.Add(ver1);
dt2.Columns.Add(name1);
dt2.Rows.Add(new object[] { '1', '1', "張三1" });//添加行
dt2.Rows.Add(new object[] { '2', '1', "222" });//添加行
dt2.Rows.Add(new object[] { '3', '1', "333" });//添加行
//for (int i = 0; i <= 100000; i++)
//{
// dt2.Rows.Add(new object[] { i.ToString(), "張三888" + i.ToString() });//添加行
//}
dt2.Rows.Add(new object[] { '5', '1', "333" });//添加行
dt2.Rows.Add(new object[] { '6', '1', "333" });//添加行
uj5u.com熱心網友回復:
挑出dt1里獨有的行,然后把dt2追加進去。DataTable dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("code", typeof(string)));
dt1.Columns.Add(new DataColumn("ver", typeof(string)));
dt1.Columns.Add(new DataColumn("name", typeof(string)));
DataTable dt2 = dt1.Clone();
dt1.Rows.Add('1', '1', "張三");//添加行
dt1.Rows.Add('2', '1', "a1");//添加行
dt1.Rows.Add('3', '1', "a2");//添加行
dt2.Rows.Add('1', '1', "張三1");//添加行
dt2.Rows.Add('2', '1', "222");//添加行
dt2.Rows.Add('3', '1', "333");//添加行
dt2.Rows.Add('5', '1', "333");//添加行
dt2.Rows.Add('6', '1', "333");//添加行
var rows1 = dt1.AsEnumerable();
var rows2 = dt2.AsEnumerable();
var keys2 = rows2.Select(r => $"{r["code"]}#{r["ver"]}");
dt1 = rows1.Where(r => !keys2.Contains($"{r["code"]}#{r["ver"]}")).Concat(rows2).CopyToDataTable();
foreach (DataRow row in dt1.Rows)
{
Console.WriteLine(string.Join(",", row.ItemArray));
}
1,1,張三1
2,1,222
3,1,333
5,1,333
6,1,333
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/266542.html
標籤:C#
上一篇:C# 方法引數呼叫問題
下一篇:理解C#泛型運作原理
