比较两个哈希集?

时间:2012-05-17 12:41:02

标签: c#

我有两个这样的哈希集:

HashSet<string> log1 = new HashSet<string>(File.ReadLines("log1.txt"));
HashSet<string> log2 = searcher(term);

我如何比较两者?

我想确保log2不包含log1中的任何条目。换句话说,我想删除log1log2内的所有项目(如果有)。

3 个答案:

答案 0 :(得分:15)

要删除log2log1的所有项目,您可以使用HashSet<T>.ExceptWith Method

log2.ExceptWith(log1);

或者,您可以使用HashSet<T>创建新的Enumerable.Except Extension Method而不修改两个原始集:

HashSet<string> log3 = new HashSet<string>(log2.Except(log1));

答案 1 :(得分:7)

使用LINQ:

log1.Intersect(log2).Any()

在MSDN上查看IntersectExcept

答案 2 :(得分:1)

您是否看过ExceptWith函数?

  

从当前HashSet对象中删除指定集合中的所有元素。