Допустим, у меня есть короткий список строк, которые могут содержать дубликаты: <"A", "A", "B", "B", "C", "C", "D", "E", "F">
Тогда, скажем, у меня есть несколько других списков строк, которые могут быть или не быть подмножествами исходного списка.Мне нужно знать:
- Охватывает ли второй набор первый набор (например, каждый элемент первого набора также содержится во втором)?
- Если 1true, сколько экземпляров второго набора требуется, чтобы воссоздать первый набор?
Итак, в этом случае, если мой второй набор был списком: <"A", "B",«C», «D», «E», «F»>, я бы получил ИСТИНА и 2.
Если бы это был список: <«A», «B», «C»>,Я бы получил ЛОЖЬ.
Если бы мой первый был <"A", "A", "A", "A", "B", "B", "B", "C", "C">:
- Секунда <<A", "B", "C">: возвращает ИСТИНА и 4.
- Секунда <<A "," A ",«B», «C»>: возвращает TRUE и 3.
Я знаю, что это можно легко сделать за N x M раз, используя вложенный цикл.Но я ищу (предпочтительно на основе Linq) решение, которое будет кратким и / или оптимизированным.Я играл с Linq.Except , но проблема в том, что он возвращает только отдельные элементы и, следовательно, бесполезен при сравнении списков строк, содержащих дубликаты.
У всех есть уникальные идеи