【问题标题】:Best way to check for duplicates when adding a new Row in DataSets?在数据集中添加新行时检查重复项的最佳方法?
【发布时间】:2011-04-05 07:08:15
【问题描述】:

向我的 DataSet 添加新项目并确保如果它是重复项目,我更新它而不是创建新条目的最有效方法是什么?

如果我在 mySQL 中编写此代码,我将使用“On Duplicate”语法。

【问题讨论】:

  • 您如何确定新项目是否与现有项目重复?通过仅查看具有主键的列,或您决定的某些列?
  • 我正在使用带有主键的列来确定它是否是重复项。我通过捕获生成的任何错误以及使用 LINQ 查询更新现有项目是否重复来临时解决了这个问题。我很确定这是不好的做法,或者至少效率不高。 :)
  • 我不认为这是一个不好的做法 :) 如果您尝试使用现有主键添加新项目,DataTable 会抛出 System.Data.ConstraintException,您可以使用 catch 块处理它通过更新表的项目。这就是我认为的方式:)

标签: c# linq dataset


【解决方案1】:

使用DataSet.Merge 方法。它具有允许您指定应如何执行合并、保留或忽略更改以及如何处理新列的重载。

此外,如果您希望合并有效,请确保您在所有表上都有一个主键,因为 DataSet 使用主键在所有行上建立一个索引。 (内部是一个 RBTree)

【讨论】:

  • 谢谢,流行卡塔林。我想这可能就是我想要的。
猜你喜欢
  • 2022-12-15
  • 2014-10-27
  • 2016-03-21
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2020-01-24
  • 2018-11-29
相关资源
最近更新 更多