HashSet 和 LINQ Set 运算
更新:2007 年 11 月
本主题对 HashSet<T> 运算和语言集成查询 (LINQ) set 运算进行比较。
LINQ Set 运算
LINQ 可向实现 IEnumerable 或 IQueryable 接口的任何数据源提供对某些 set 运算的访问。其中包括数组和集合。
LINQ 提供的 set 运算如下:
Distinct
Union
Intersect
Except
有关 LINQ 的更多信息,请参见语言集成查询 (LINQ)。有关 LINQ set 运算的更多信息,请参见 Set 运算。
何时使用 HashSet<T>
LINQ set 运算和 HashSet<T> 运算之间的主要区别在于,LINQ set 运算始终返回一个新的 IEnumerable<T> 集合,而 HashSet<T> 等效方法则修改当前的集合。HashSet<T> 提供了一个更大、更可靠的 set 运算集合。例如,HashSet<T> 可提供 IsSubsetOf 和 IsSupersetOf 等类似的比较运算。
通常,如果必须创建新的 set,或者应用程序只需要访问已提供的 set 运算,则对任何 IEnumerable<T> 集合或数组使用 LINQ set 运算便足够了。但是,如果应用程序需要访问其他 set 运算,或者您不想或不需要创建新的 set,请使用 HashSet<T> 类。
HashSet<T> 和 LINQ Set 运算
下表显示了 HashSet<T> 运算及其等效的 LINQ set 运算。
HashSet(Of T) 运算 |
LINQ 等效项 |
---|---|
未提供 |
|
未提供。 |
|
未提供。 |
|
未提供。 |
|
未提供。 |
|
未提供。 |
|
未提供。 |
|
未提供。 |