【问题标题】:Insert List<> and check for duplicates插入 List<> 并检查重复项
【发布时间】:2014-05-12 18:23:42
【问题描述】:

我正在尝试构建一个读取新闻 RSS 提要的应用程序,然后将元素放入数据库中。我以后可以从中为每个主题“标题”添加统计信息。

我认为最好的方法是编写一个脚本,将 xml 数据解析为一个列表,然后将此列表插入数据库,同时检查重复项?

或者你有什么更聪明的办法吗?

主要问题,如何将列表插入数据库并同时防止重复?谢谢

【问题讨论】:

  • 你认为什么是重复的?来自 RSS 提要的重复主题或数据库中的重复主题行?我假设您的数据库应该能够为每个主题存储多行。
  • RSS 提要中的重复主题。每个主题都是独一无二的,所以我唯一要检查的是当前数据库,所以我没有重复的帖子。
  • 那么我相信 cost 有一个很好的答案来解决您的用例。这将使您不断地查找以检查重复项。只需确保哈希集的关键是主题即可。
  • 为什么不一次向数据库中插入一条记录呢?查找和拒绝重复是数据库擅长的。
  • 如果您使用的是 SQL 服务器(正如您的标签所建议的那样),为什么不将 unique constraints 添加到您的数据库并避免自己检查重复项?表索引非常擅长检查重复项。

标签: c# asp.net sql-server linq


【解决方案1】:

如果这是您想要的方式,而不是列表,请考虑使用Hashset。如果您的新闻提要中有很多元素,hashset 可以快速告诉您它是否已经存在于集合中。在伪代码中它基本上是:

HashSet.Add(Element);

自动忽略重复记录(Add 将在添加项目时返回 true,如果已存在则返回 false)。

【讨论】:

  • Add 如果元素已经在集合中,则不要抛出,因此在这种情况下Contains 是不必要的。
  • @NicolasRepiquet 我不知道,谢谢你的提示。我会更新我的答案。
猜你喜欢
  • 2011-12-04
  • 2021-05-24
  • 2011-02-03
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多