具有相同键的项目已添加c#error

时间:2010-10-25 20:38:01

标签: c# dictionary

foreach (Benefit bene in claim.SubClaimFolderCollection[0].BenefitsFolder.BenefitCollection) 
{
    Dictionary<string, object> searchBeneficiary = 
        new Dictionary<string,object>();

     searchBeneficiary.Add("rli_beneficiariesid", ((Guid)claimant.GetValue("rli_subclaimfolderid", true)));     
}

它给了我这个错误

  

在向词典添加项目时,已添加具有相同键的项目。

4 个答案:

答案 0 :(得分:7)

你确定错误来自这里吗?看起来每次迭代都要创建一个新的字典,在其中插入一个条目,然后丢弃字典。这不应该给出这个错误,也不太可能是你打算做的。

如果要将集合转换为字典,我建议使用Enumerable.ToDictionary方法(需要.NET 3.5)。

答案 1 :(得分:2)

在我看来,每次通过循环时,“rli_beneficiariesid”键被添加到字典中两次:

(从原始帖子中的当前代码示例中复制并粘贴代码):

searchBeneficiary.Add( 
        "rli_beneficiariesid",  
        searchBeneficiary.Add("rli_beneficiariesid", ((Guid)claimant.GetValue("rli_subclaimfolderid", true)));    

请注意,searchBeneficiary.Add正在使用“rli_beneficiariesid”进行调用。在Add调用内部,使用相同的密钥再次调用searchBeneficiary.Add。

净效应似乎是使用“rli_beneficiariesid”键将一个guid(claimant.GetValue)添加到searchBeneficiary字典中,然后使用相同的键将字典添加到自身

答案 2 :(得分:0)

似乎错误不能出现在这里:在空字典中添加一对...请从异常中提供完整的堆栈跟踪。

答案 3 :(得分:0)

此代码不会导致错误。 :)

请发布claimant.GetValue(...)方法的代码,以及从内部访问的方法/属性(如果有的话)。我想,你可以将这个方法中的smth保存到其他字典中。