gpt4 book ai didi

c# - 如何比较两个数据表

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:33 25 4
gpt4 key购买 nike

我有一个包含 72 列的数据表。

我将使用 VSTO 将其下载到 Excel 工作表中,效果很好。

现在用户将更改这些行之一或所有这些行,并且还将插入一个新行。

考虑先下载的datatable为dtA,excel表中修改过的为dtB。

我想比较 dtA 和 dtB。

我需要找出 dtB 中不存在于 dtA 中的所有行。

我不能为每一行放置 foreach 循环并评估它是一种非常不整洁的编码方式。

执行此操作的更好方法是什么?

我是这样做的

    DataTable dtA = new DataTable();
dtA.Columns.Add("ENo");
dtA.Columns.Add("ENo1");
dtA.Columns.Add("ENo2");
dtA.Columns.Add("ENo3");
dtA.Columns.Add("ENo4");

for (int i = 0; i < 5; i++)
{
DataRow dr = dtA.NewRow();
dr[0] = "Part 0 " + i.ToString();
dr[1] = "Part 1 " + i.ToString();
dr[2] = "Part 2 " + i.ToString();
dr[3] = "Part 3 " + i.ToString();
dr[4] = "Part 4 " + i.ToString();
dtA.Rows.Add(dr);
}

DataTable dtB = new DataTable();
dtB.Columns.Add("ENo");
dtB.Columns.Add("ENo1");
dtB.Columns.Add("ENo2");
dtB.Columns.Add("ENo3");
dtB.Columns.Add("ENo4");

for (int i = 5; i < 10; i++)
{
DataRow dr = dtB.NewRow();
dr[0] = "Part 0 " + i.ToString();
dr[1] = "Part 1 " + i.ToString();
dr[2] = "Part 2 " + i.ToString();
dr[3] = "Part 3 " + i.ToString();
dr[4] = "Part 4 " + i.ToString();
dtB.Rows.Add(dr);
}

Response.Write("\n");
Response.Write("dt A");
Response.Write("\n");

for (int i = 0; i < dtA.Rows.Count; i++)
{
Response.Write(dtA.Rows[i][i].ToString());
Response.Write("\n");
}

Response.Write("\n");
Response.Write("dt B");
Response.Write("\n");
for (int i = 0; i < dtB.Rows.Count; i++)
{
Response.Write(dtB.Rows[i][i].ToString());
Response.Write("\n");
}

var VarA = dtA.AsEnumerable();
var varB = dtA.AsEnumerable();

var diff = VarA.Except(varB);
Response.Write("except");
foreach (var n in diff)
{
Response.Write(n.Table.Rows[0].ToString());

}

但我不知道在foreach var中使用什么,请问我应该用什么?

最佳答案

SELECT id FROM dtB WHERE id NOT IN (SELECT id FROM dtA)

关于c# - 如何比较两个数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com