2011-10-03 66 views
3

我有,当我试图将项目添加到它其中有挂着一个应用程序,当我检查跟踪文件,我得到这个条目项目已被添加。重点在词典:

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

} 

我不知道如何解决这个问题,任何身体有任何建议

回答

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); 
    } 
} 

这将确保每个密钥都是唯一的。但是,如果您期待每个键的值不止一个,那么您需要使用不同类型的集合。

+0

我正在测试这个,截至目前没有问题,但你告诉“如果你期望每个键的值不止一个,那么你需要使用不同类型的集合”你能澄清这一点。我在我的问题中提到的问题,在我的跟踪错误中提到“键入字典:'7d210e02-176e-4910-a8aa-0a8606ec95cc'正在添加的键:'7d210e02-176e-4910-a8aa-0a8606ec95cc'' – user972380

+0

我的意思是如果你有两个具有相同GUID的DataModelObjects,那么这意味着它们是相同的DataModelObject?如果是这样,那么上面的代码是可以的。 –

+0

你是对的,我还有一个问题,以前的代码会让任何应用程序挂起或挂起是由于其他原因? – user972380

1

例外表明您添加相同key两次你dictionary,要解决这个问题,你可以通过确保其传递给函数的DataModelCollection objects具有独特的Key值(在你的情况是Guid启动数据类型)dmo.Guid

+0

我怎么可以确定一个 – user972380

+1

你现在可以调试或者开始生产吗? –

+0

当我重新启动服务的问题消失了,现在我可以添加对象没有挂。对于测试调试器没有击中“SatisfyGRs”本身 – user972380

相关问题