项目已添加。键入字典:

时间:2011-10-03 06:44:37

标签: c# exception dictionary

我有一个应用程序在我尝试添加项目时挂起,当我检查跟踪文件时我得到了这些条目

   for (int i=0; i<objects.Count; i++) 
   {
      DataModelObject dmo = (DataModelObject)objects.GetAt(i);
      sl.Add(dmo.Guid, dmo);
   }

}

我不知道如何解决这个问题,任何机构都有任何建议

2 个答案:

答案 0 :(得分:9)

问题是在排序列表中,每个键都必须是唯一的。所以你需要检查你没有插入两次相同的密钥(guid值)。代码如下所示:

 for (int i=0; i<objects.Count; i++) 
 {        
    DataModelObject dmo = (DataModelObject)objects.GetAt(i);

    if (!sl.ContainsKey(dmo.Guid))
    {
        sl.Add(dmo.Guid, dmo);
    }
 }

这将确保每个键都是唯一的。但是,如果您希望每个键有多个值,那么您需要使用不同类型的集合。

答案 1 :(得分:1)

该异常表示您向key添加了两次dictionary,为解决此问题,您可以首先确保传递给该函数的DataModelCollection objects具有唯一{{1}值(在您的情况下为Key数据类型)Guid