Hashset <string>包含集合</string>

时间:2013-12-01 16:45:48

标签: c#

我正在比较两个充满文件名的哈希集。我已经成功实现了“ExceptWith”,但现在我需要获得“两个集合中所有文件名”的列表。

我知道hashset有一个包含但这意味着为另一个的每个项循环hashset。 想知道是否有内置方法来做到这一点。 我正在使用超过50000个文件名的文件。

非常感谢

1 个答案:

答案 0 :(得分:3)

你所说的是一个集合交集。有一个内置的方法:

HashSet<string> x = new HashSet<string> { "x", "a","b"};
HashSet<string> y = new HashSet<string> { "z", "a","b"};
x.IntersectWith(y);

请注意,这会修改原始HashSet x。如果您不想这样,请在Enumerable上使用扩展方法:

var intersection = x.Intersect(y);

由于最后一个被定义为IEnumerable<T>的扩展名,因此它也适用于更一般的情况。请注意,它可能不像HashSet<T>.IntersectWith那样对性能进行优化,因为它需要能够处理所有可用的数据。