Фильтровать словарь - PullRequest
0 голосов
/ 06 марта 2019

У меня есть Dictionary<String, List<String>>, и мне нужно отфильтровать его, и оставить только те пары, где List<String> содержит значения, которые повторяются (дубликаты).Я понимаю, что должен быть подзапрос linq, но все мои варианты терпят неудачу.

Пример:

var dictionary = new Dictionary<String,List<String>>();

dictionary.Add("Key1", new List<String>{"1","2","2","3"});
dictionary.Add("Key2", new List<String>{"1","2","3"});
dictionary.Add("Key3", new List<String>{"1","2","4"});
dictionary.Add("Key4", new List<String>{"1","2","5"});

Поэтому мне нужно оставить только первую пару, потому что этот список имеет дубликаты для значения "2" .

1 Ответ

3 голосов
/ 06 марта 2019

вашего словаря:

  • взять все пары ключ-значение
  • из них, возьмите только те, в которых список после удаления дубликатов больше не содержит одинаковое количество элементов (поэтому было дубликатов)
  • , а затем создайте новый словарь из оставшихся пар ключ-значение

Код:

var filteredDictionary = dictionary.Where(pair => pair.Value.Distinct().Count()
                                               != pair.Value.Count)
                                   .ToDictionary(x => x.Key, x => x.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...