110,476
社区成员
发帖
与我相关
我的任务
分享
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" });//添加行
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(int)));
DataTable dt2 = dt1.Clone();
dt1.Rows.Add('1', '1', 1);//添加行
dt1.Rows.Add('2', '1', 1);//添加行
dt1.Rows.Add('3', '1', 1);//添加行
for (int i = 0; i <= 100000; i++)
{
dt1.Rows.Add("a2" + i, i, i);
}
dt2.Rows.Add('1', '1', 1);//添加行
dt2.Rows.Add('2', '1', 1);//添加行
dt2.Rows.Add('3', '1', 1);//添加行
dt2.Rows.Add('5', '1', 1);//添加行
dt2.Rows.Add('6', '1', 1);//添加行
for (int i = 0; i <= 100; i++)
{
dt1.Rows.Add("a2" + i, i, i+100);
}
System.Data.DataTable dt1 = new DataTable();
dt1.Columns.Add("name");
dt1.Columns.Add("value");
dt1.PrimaryKey = new DataColumn[] {dt1.Columns[0]};
dt1.LoadDataRow(new Object[] { "a", 1 }, true);
dt1.LoadDataRow(new Object[] { "b", 1 }, true);
System.Data.DataTable dt2 = new DataTable();
dt2.Columns.Add("name");
dt2.Columns.Add("value");
dt2.PrimaryKey = new DataColumn[] {dt2.Columns[0]};
dt2.LoadDataRow(new Object[] { "a", 2 }, true);
dt2.LoadDataRow(new Object[] { "c", 2 }, true);
dt1.Merge(dt2);
核心
dt1.PrimaryKey = new DataColumn[] {dt1.Columns[0]};
dt2.PrimaryKey = new DataColumn[] {dt2.Columns[0]};
dt1.Merge(dt2);
微软告诉你,循环不是你要操心的事情,你需要操心的事情,给我个key,我需要通过key直接定位数据
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