gpt4 book ai didi

c# - 如何避免向数据表添加重复行

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

我正在使用 SqlDataReader 逐行添加到数据表中,如下所示:

while (reader.Read())
{
dataTable.LoadDataRow(reader.CurrentRow(), LoadOption.PreserveChanges);
}

这可行,但我需要能够避免向数据表中添加重复行。我希望能够使用 dataTable 中的 Contains 或 Find 方法,但我找不到将 object[] 从 reader.CurrentRow() 转换为 DataRow 以便在不将其添加到数据表的情况下进行比较的方法。

我研究了创建对象 [] 的哈希集的选项,然后将它们一次全部添加到末尾的数据表中,但我忘记了默认对象 IEqualityComparer 只比较引用。

是否有一种可行的方法可以在不删除最后重复项的情况下执行此操作?

如果删除重复项是唯一的方法,那么最好的方法是什么?

编辑:我将数据库中的不同行拆分为代码中的单独数据表。查询结果中的每一行都是不同的,但每一行的部分不是。不幸的是,我需要完全按照我的问题来做,因为查询的结果已经不同了。

最佳答案

您没有提供大量细节,但我希望这是全面的。

如果您需要单个列是唯一的,那么在数据表的 Columns 集合中,像这样指定列:

 DataTable appeals = new DataTable("Appeals");
appeals.Columns["PriorAppealNumber"].Unique = true;
DataColumn keyField = new DataColumn("AppealNumber", typeof(string));
appeals.Columns.Add(keyField);

如果唯一性需要跨越多行,这是方法:

 var myUniqueConstraint = new UniqueConstraint( new DataColumn[] {appeals.Columns[0], appeals.Columns[1], appeals.Columns[2]} );
appeals.Constraints.Add(myUniqueConstraint);

这将在您尝试提交回源数据库之前强制执行约束。

关于c# - 如何避免向数据表添加重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890960/

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