Определите относительное дополнение двух наборов IEnumerable <T> в .NET.
Есть ли простой способ получить относительный дополнение двух наборов? Возможно, используя LINQ?
Мне нужно найти относительный комплимент множества A относительно B. Оба A и B имеют тип HashSet<T>
, но я думаю, что алгоритм можно было бы сделать более общим (IEnumerable<T>
или даже ISet<T>
)?
Я мог бы использовать решение в VB.NET или С#.
Ответы
Ответ 1
Вы пробовали Enumerable.Except
?
setB.Except(setA)
Пример:
HashSet<int> setB = new HashSet<int> { 1, 2, 3, 4, 5 };
HashSet<int> setA = new HashSet<int> { 1, 3, 5, 7 };
HashSet<int> result = new HashSet<int>(setB.Except(setA));
foreach (int x in result)
Console.WriteLine(x);
Результат:
2
4