Определите относительное дополнение двух IEnumerable <T> наборы в.NET

Существует ли простой способ получить относительное дополнение двух наборов? Возможно, с помощью LINQ?

Я должен найти относительный комплимент набора относительно B. И A и B имеют тип HashSet но я думаю, что алгоритм мог быть сделан более общим (IEnumerable или даже ISet)?

Я мог использовать решение или в VB.NET или в C#.

12
задан Mark Byers 2 June 2010 в 19:11
поделиться

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
28
ответ дан 2 December 2019 в 05:27
поделиться