【问题标题】:C# Dictionary Error - An item with the same key has already been addedC# 字典错误 - 已添加具有相同键的项目
【发布时间】:2013-03-18 23:11:29
【问题描述】:

我在字典中插入一个唯一的ID[KEY] 及其对应的time[VALUE]。 我在 ID 列中只有唯一值,但出现以下错误

“已添加具有相同键的项”

for (int j = 0; j < pro1.Count; j++)
{

  string startend = "Select Id, CStart, CEnd from MBA1 where Channel='" + mbaChannel[allchan] + "' and Product='" + pro[allpro] + "' and ProgDate='" + pro1[j] + "'";
  SqlCommand dat = new SqlCommand(startend, conn);
  SqlDataReader datrdr = dat.ExecuteReader();
  while (datrdr.Read())
  {
      start.Add(datrdr["Id"].ToString(), datrdr.GetDateTime(1));
      end.Add(datrdr["Id"].ToString(), datrdr.GetDateTime(2));

  }
  datrdr.Close();

我确定我的 ID 列中没有重复项。请帮忙!

【问题讨论】:

  • 也许你开始阅读时字典不是空的?
  • 好的格式永远是你的朋友..
  • 你怎么能这么确定呢?你打电话给 yourDict.ContainsKey() 来检查了吗?
  • 我们无能为力...不会说谎,在某些时候您必须添加重复的密钥。
  • 调试你的代码,更快更简单,一步一步来。

标签: c# asp.net .net dictionary


【解决方案1】:

您的查询和字典更新处于循环中。如果 Id 列中没有重复值,那么您的查询将在两个不同的查询中返回至少 1 行(在您的示例中为 j 的不同值)。

【讨论】:

    【解决方案2】:

    您正在运行您的查询 pro1.Count 次。如果 pro1.Count > 1,您将尝试将重复项放入您的字典中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多