6

我有两个这样的哈希集:

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

我将如何比较两者?

我想确保它log2不包含任何来自log1. 换句话说,我想删除所有(如果有的话),log1里面有log2.

4

3 回答 3

15

要从中删除所有项目log2log1您可以使用HashSet<T>.ExceptWith 方法

log2.ExceptWith(log1);

或者,您可以创建一个新的HashSet<T>而无需使用Enumerable.Except 扩展方法修改两个原始集:

HashSet<string> log3 = new HashSet<string>(log2.Except(log1));
于 2012-05-17T12:44:40.107 回答
7

使用 LINQ:

log1.Intersect(log2).Any()

请参阅MSDN 上的Intersect和。Except

于 2012-05-17T12:44:30.347 回答
1

你见过这个ExceptWith功能吗?

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

于 2012-05-17T12:44:41.987 回答