Операции над множествами в 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 |
---|---|
Не предоставлен. |
|
Не предоставлен. |
|
Не предоставлен. |
|
Не предоставлен. |
|
Не предоставлен. |
|
Не предоставлен. |
|
Не предоставлен. |
|
Не предоставлен. |
См. также
Ссылки
Основные понятия
Часто используемые типы коллекций