gpt4 book ai didi

c# - 比较两个 DataTables 以确定它是否被修改

转载 作者:行者123 更新时间:2023-11-30 19:09:12 25 4
gpt4 key购买 nike

我有两个数据表:

DataTable原件;数据表已修改;

两个表的行数相同,列数和数据相同。

我希望我的修改 数据表确定每一行以与原始 数据表进行比较。如果 modified 数据表中的一行不等于 original 数据表中的行,则该行的 .RowState 将设置为 。来自 modified 数据表的 SetModified()

例如:

................................................ ....

如果 original 中的 row1 不等于 modified 中的 row1,则 row1.SetModified()

如果 original 中的 row2 不等于 modified 中的 row2 then row2.SetModified()....等

................................................ .....................

不应该是这样的:

................................................ .....................

如果 original 中的 row1 不等于 modified 中的 row2,则 row1.SetModified()

如果 original 中的 row2 不等于 modified 中的 row3,则 row1.SetModified()...等等

................................................ .....................

明白了吗? :)

有没有不使用 Primary Keys 的代码建议?

最佳答案

在另一个 foreach 中使用 foreach 循环是 N X N 比较,您不需要这样做。

比较第一行与其他表的第一行,第二行与第二行等等,使用 Zip 扩展方法对这种情况非常有用。

DataTable original;
DataTable modified;

// your stuff

modified = modified.AsEnumerable().Zip<DataRow, DataRow, DataRow>(original.AsEnumerable(), (DataRow modif, DataRow orig) =>
{
if (!orig.ItemArray.SequenceEqual<object>(modif.ItemArray))
{
modif.SetModified();
}
return modif;
}).CopyToDataTable<DataRow>();

关于c# - 比较两个 DataTables 以确定它是否被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333473/

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