Поделиться через


Операции над множествами в HashSet и LINQ

В этом разделе сравниваются операции HashSet<T> с операциями множеств встроенного языка запросов (LINQ).

LINQ операции множеств

LINQ предоставляет доступ к некоторым операциям множеств для любого источника данных, реализуя интерфейс IEnumerable или IQueryable. Сюда входят массивы и коллекции.

Список операций множеств, которые предоставляет LINQ, приведен ниже:

  • Distinct

  • Объединение

  • Пересечение

  • Исключение

Дополнительные сведения о LINQ см. в разделах LINQ и Parallel LINQ (PLINQ). Дополнительные сведения об операциях множеств LINQ содержатся в разделе Операции над множествами.

Случаи использования HashSet <T>

Основным различием между операциями над множествами LINQ и операциями HashSet<T> является то, что операции над множествами LINQ всегда возвращают новую коллекцию IEnumerable<T>, тогда как эквивалентные методы HashSet<T> изменяют текущую коллекцию. Метод HashSet<T> предоставляет широкую и более надежную коллекцию операций над множествами. Например, HashSet<T> предоставляет сравнения, такие как IsSubsetOf и IsSupersetOf.

Как правило, если необходимо создать новое множество или если приложению необходимо получить доступ только к предоставленному множеству операций, то использование операций множеств LINQ над любой коллекцией IEnumerable<T> или массивом будет рационально. Однако если приложению требуется иметь доступ к дополнительным операциям множеств, или если это не желательно, или необходимо создать новую коллекцию, то используйте класс HashSet<T>.

HashSet <T> и LINQ операции над множествами

В следующей таблице показаны операции HashSet<T> и их эквивалентные LINQ операций множеств.

Операция HashSet(Of T)

Эквивалент в LINQ

UnionWith

Union

IntersectWith

Intersect

ExceptWith

Except

Не предоставлен.

Distinct

SymmetricExceptWith

Не предоставлен.

Overlaps

Не предоставлен.

IsSubsetOf

Не предоставлен.

IsProperSubsetOf

Не предоставлен.

IsSupersetOf

Не предоставлен.

IsProperSupersetOf

Не предоставлен.

SetEquals

Не предоставлен.

См. также

Ссылки

HashSet<T>

Основные понятия

Тип коллекции HashSet

Parallel LINQ (PLINQ)

Операции над множествами

Часто используемые типы коллекций

Другие ресурсы

LINQ