Элемент с тем же ключом уже был добавлен c # error - PullRequest
2 голосов
/ 26 октября 2010
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 ]

7 голосов
/ 26 октября 2010

Вы уверены, что ошибка идет отсюда? Похоже, что для каждой итерации вы создаете новый словарь, вставляете в него одну запись, а затем отбрасываете словарь. Это не должно приводить к этой ошибке, и очень маловероятно, что вы намеревались сделать.

Если вы хотите преобразовать коллекцию в словарь, я бы предложил использовать метод Enumerable.ToDictionary (требуется .NET 3.5).

2 голосов
/ 26 октября 2010

Мне кажется, что ключ "rli_beneficiariesid" дважды добавляется в словарь каждый раз через цикл:

(код скопирован и вставлен из текущего примера кода в исходном сообщении):

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

Обратите внимание, что searchBeneficiary.Add вызывается с помощью "rli_beneficiariesid".Внутри вызова Add, searchBeneficiary.Add вызывается снова с тем же ключом.

В результате получается, что guid (claimant.GetValue) добавляется в словарь searchBeneficiary с помощью "rli_beneficiariesid"ключ, а затем словарь добавляется к себе с тем же ключом!

0 голосов
/ 30 октября 2010

Этот код не может привести к ошибке. :)

Пожалуйста, опубликуйте код метода claimant.GetValue (...) и из методов / свойств, к которым он обращается изнутри (если есть) Я полагаю, что вы можете сохранить что-то внутри этого метода в другом словаре.

0 голосов
/ 26 октября 2010

Кажется, что здесь не может появиться ошибка: добавление одной пары в пустой словарь ... Пожалуйста, дайте полную трассировку стека из исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...