Re: Ключ, взятый из коллекции ключей, отсутствует в словаре
От: 4058  
Дата: 30.03.22 11:13
Оценка:
Здравствуйте, Воронин Иван, Вы писали:

ВИ>Список заполнен. Беру из него коллекцию ключей, прохожу по ней и смотрю значения, соответствующие ключу.


ВИ>
ВИ>            ICollection<TargetKey> tKey = NewTarget.Keys;
ВИ>            foreach (TargetKey tT in tKey)
ВИ>            {
ВИ>                MessageBox.Show(NewTarget[tT].Code + " | " + NewTarget[tT].Name + " | " + NewTarget[tT].Level);
ВИ>            }
ВИ>


Если это самоцель, то проще не индексироваться по ключу:

            foreach (var pair in NewTarget)
            {
                Console.WriteLine(pair.Value.Code + " | " + pair.Value.Name + " | " + pair.Value.Level);
            }


т.к. пары (в SortedList) уже будут упорядочены по ключу.

ВИ>Вылетает исключение: System.Collections.Generic.KeyNotFoundException: "Данный ключ отсутствует в словаре."

ВИ>Как в словаре может отсутствовать ключ, взятый из самого этого ключа?
ВИ>Единственное, что могу предположить — некорректная перегрузка операторов сравнения и/или компаратора, но не понимаю, где именно.

Чтобы это понять, надо узнать значение ключа (tT) на котором это происходит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.