Хаштаблические дубликаты - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть хеш-таблица, которую я преобразовываю в словарь в той же строке

Hashtable ids = new Hashtable();

ids = new Hashtable(_AppContext.TBL_PERSON.Where(oItem => oItem.DELETED == false).ToDictionary(o => o.CODE.ToUpper(), o => o.PERSON_ID));

Дело в том, что я получаю ошибку

"Элемент с тем же ключом имеет уже был добавлен. "

после проверки строк выясняется, что столбец CODE имеет одно и то же значение строки несколько раз. Есть ли способ выбрать только первое значение, которое происходит, как First (), но не делая его первым datatable, а затем изменяя его на hashtable?

1 Ответ

1 голос
/ 27 апреля 2020

Конечно - используйте GroupBy, а затем выберите объект First() в группе для значения:

ids = new Hashtable(
        _AppContext.TBL_PERSON.Where(oItem => oItem.DELETED == false)
                              .GroupBy(o => o.CODE.ToUpper())
                              .ToDictionary(g => g.Key, g => g.First().PERSON_ID)
       );

Имейте в виду, что это дает вам HashTable из KeyValuePair<T,U> объектов, что кажется странным , Если вам нужен словарь, вы все равно можете использовать GroupBy и просто удалить внешнее HashTable создание.

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