Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Исключить повторяющиеся значения из Dictionary

Есть Dictionary, к примеру
IDictionary>
есть модель
public class Model { public string Name { get; set;} public byte[] Data { get; set;} }
Как можно исключить повторяющиеся значения для Name во всем Dictionary? Отфильтровать существующий словарь. Повторяющиеся значения Value необходимо удалять. Т.е. если в ключе "Key1" и в ключе "Key2" в списке есть Name с одинаковым значением, то необходимо исключить это значение для ключа (не важно какого)
тестовые данные
{"key1", {"Name1", }, {"Name2", }, {"Name3", }} {"key2", {"Name4", }, {"Name2", }, {"Name5", }}
результат
{"key1", {"Name1", }, {"Name2", }, {"Name3", }} {"key2", {"Name4", }, {"Name5", }}
или
{"key1", {"Name1", }, {"Name3", }} {"key2", {"Name4", }, {"Name2", }, {"Name5", }}


Ответ

HashSet uniqueNames = new HashSet(); foreach (KeyValuePair> pair in dict) { foreach (Model model in pair.Value.ToList()) { if (!uniqueNames.Add(model.Name)) { pair.Value.Remove(model); } } }

Комментариев нет:

Отправить комментарий