我有,当我试图将项目添加到它其中有挂着一个应用程序,当我检查跟踪文件,我得到这个条目项目已被添加。重点在词典:
for (int i=0; i<objects.Count; i++)
{
DataModelObject dmo = (DataModelObject)objects.GetAt(i);
sl.Add(dmo.Guid, dmo);
}
}
我不知道如何解决这个问题,任何身体有任何建议
我有,当我试图将项目添加到它其中有挂着一个应用程序,当我检查跟踪文件,我得到这个条目项目已被添加。重点在词典:
for (int i=0; i<objects.Count; i++)
{
DataModelObject dmo = (DataModelObject)objects.GetAt(i);
sl.Add(dmo.Guid, dmo);
}
}
我不知道如何解决这个问题,任何身体有任何建议
问题是,在排序列表中,每个键都必须是唯一的。所以你需要检查你是不是两次插入相同的密钥(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);
}
}
这将确保每个密钥都是唯一的。但是,如果您期待每个键的值不止一个,那么您需要使用不同类型的集合。
例外表明您添加相同key
两次你dictionary
,要解决这个问题,你可以通过确保其传递给函数的DataModelCollection objects
具有独特的Key
值(在你的情况是Guid
启动数据类型)dmo.Guid
我怎么可以确定一个 – user972380
你现在可以调试或者开始生产吗? –
当我重新启动服务的问题消失了,现在我可以添加对象没有挂。对于测试调试器没有击中“SatisfyGRs”本身 – user972380
我正在测试这个,截至目前没有问题,但你告诉“如果你期望每个键的值不止一个,那么你需要使用不同类型的集合”你能澄清这一点。我在我的问题中提到的问题,在我的跟踪错误中提到“键入字典:'7d210e02-176e-4910-a8aa-0a8606ec95cc'正在添加的键:'7d210e02-176e-4910-a8aa-0a8606ec95cc'' – user972380
我的意思是如果你有两个具有相同GUID的DataModelObjects,那么这意味着它们是相同的DataModelObject?如果是这样,那么上面的代码是可以的。 –
你是对的,我还有一个问题,以前的代码会让任何应用程序挂起或挂起是由于其他原因? – user972380