HashSet 和 LINQ Set 运算

本主题对 HashSet<T> 运算和语言集成查询 (LINQ) set 运算进行比较。

LINQ Set 运算

LINQ 可向实现 IEnumerableIQueryable 接口的任何数据源提供对某些 set 运算的访问。 其中包括数组和集合。

LINQ 提供的 set 运算如下:

  • Distinct

  • Union

  • 相交

  • Except

有关 LINQ 的更多信息,请参见LINQ(语言集成查询)并行 LINQ (PLINQ)。 有关 LINQ set 运算的更多信息,请参见 Set 运算

何时使用HashSet<T>

LINQ set 运算和 HashSet<T> 运算之间的主要区别在于:LINQ set 运算始终返回新的 IEnumerable<T> 集合,而 HashSet<T> 等效方法修改当前的集合。 HashSet<T> 提供了一个更大、更可靠的 set 运算集合。 例如,HashSet<T> 可提供 IsSubsetOfIsSupersetOf 等类似的比较运算。

通常,如果必须创建新的 set,或者应用程序只需要访问已提供的 set 运算,则对任何 IEnumerable<T> 集合或数组使用 LINQ set 运算便足够了。 但是,如果应用程序需要访问其他 set 运算,或者您不想或不需要创建新的 set,请使用 HashSet<T> 类。

HashSet<T> and LINQ Set运算

下表显示了 HashSet<T> 运算及其等效的 LINQ set 运算。

HashSet(Of T) 运算

LINQ 等效项

UnionWith

Union

IntersectWith

Intersect

ExceptWith

Except

未提供。

Distinct

SymmetricExceptWith

未提供。

Overlaps

未提供。

IsSubsetOf

未提供。

IsProperSubsetOf

未提供。

IsSupersetOf

未提供。

IsProperSupersetOf

未提供。

SetEquals

未提供。

请参见

参考

HashSet<T>

概念

HashSet 集合类型

并行 LINQ (PLINQ)

Set 运算

其他资源

LINQ(语言集成查询)

常用的集合类型