已添加具有相同密钥的项c#错误 foreach(索赔中的福利福利。子类FolderCollection[0]。福利文件夹。福利收集) { 字典搜索受益人= 新字典(); search受益人.Add(“rli_受益人ID”((Guid)claimer.GetValue(“rli_subcimFolderId”,true)); }

已添加具有相同密钥的项c#错误 foreach(索赔中的福利福利。子类FolderCollection[0]。福利文件夹。福利收集) { 字典搜索受益人= 新字典(); search受益人.Add(“rli_受益人ID”((Guid)claimer.GetValue(“rli_subcimFolderId”,true)); },c#,dictionary,C#,Dictionary,它给了我这个错误 将项添加到字典时,已添加具有相同键的项 你确定错误来自这里吗?对于每次迭代,您都会创建一个新字典,在其中插入一个条目,然后丢弃该字典。这不应该产生这个错误,而且它也不太可能是您想要做的 如果要将集合转换为字典,我建议使用该方法(需要.NET 3.5)。此处似乎无法显示错误:将单个对添加到空字典中。。。请从异常中提供完整的堆栈跟踪。在我看来,“rli\u受益人ID”键每次通过循环被添加到字典中两次: (从原始帖子中的当前代码示例复制并粘贴的代码): 请注意,search受益人.A

它给了我这个错误

将项添加到字典时,已添加具有相同键的项


你确定错误来自这里吗?对于每次迭代,您都会创建一个新字典,在其中插入一个条目,然后丢弃该字典。这不应该产生这个错误,而且它也不太可能是您想要做的


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

此处似乎无法显示错误:将单个对添加到空字典中。。。请从异常中提供完整的堆栈跟踪。

在我看来,“rli\u受益人ID”键每次通过循环被添加到字典中两次:

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

请注意,search受益人.Add是用“rli_受益人ID”调用的。在Add调用内部,search受益人。使用相同的键再次调用Add


净效果似乎是guid(claimer.GetValue)被添加到带有“rli_受益人ID”键的search受益人词典中,然后词典被添加到带有相同键的自身中

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


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

在我的项目中没有这样的字典,而且如果您注意到我已使用new对其进行了初始化,那么不应该有任何内容。您确定发布了正确的代码吗?您能解释一下您试图实现的目标吗?在foreach循环中声明字典看起来非常奇怪,因为在循环的每次迭代中都会有效地清除字典。但是,我无法理解为什么您在上面的代码中已经添加了密钥。我很想看看
subkimFolderCollection[0].GetValue方法在做什么。是的,我知道这很奇怪,而且我从一个小时以来就一直在与它作斗争,这就是我所认为的,不应该有任何问题,而且实际上没有给出任何错误,而是运行时异常。@Ashutosh:您确定发布的代码就是给出错误的代码吗?您可以发布完整的堆栈跟踪吗?抱歉,我无法发布整个代码,但是的,错误仅来自此行,我已通过快速观察看到。此外,我在项目中的任何其他地方都没有使用此词典,如果您没有在其他任何地方使用此词典,为什么不删除代码?无论如何,它没有做任何有用的事情。但问题是,如果字典每次都被重置,你不是在执行不必要的操作吗?另外,字典在for循环的范围内,所以您不能在其他任何地方访问它。如果映射实际上是您的代码的样子,您怎么可能使用映射呢?System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)\r\n System.Collections.Generic.Dictionary
2.Insert(TKey键,TValue值,布尔添加)\r\n System.Collections.Generic.Dictionary
2.add(TKey键,TValue值) string@Ashutosh:您需要提供还包括行号的堆栈跟踪。没有行号的堆栈跟踪不会有多大帮助。请尝试在调试模式下运行代码。此外,您还需要指定代码示例开始的行号,以便我们可以查看堆栈跟踪引用的行。最后,您应该更新您的问题w将此信息添加到邮件中,而不是在评论中发布。
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)));     
}
searchBeneficiary.Add( 
        "rli_beneficiariesid",  
        searchBeneficiary.Add("rli_beneficiariesid", ((Guid)claimant.GetValue("rli_subclaimfolderid", true)));