2012-05-17 24 views
5

Tengo dos hashsets como este:¿Comparar dos hashsets?

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

¿Cómo voy a comparar los dos?

Quiero asegurarme de que log2 no contiene ninguna entrada de log1. En otras palabras, quiero eliminar todos los elementos (si los hay) que log1 tiene dentro de log2.

+0

Pase por cada elemento en log1 y compárelos con cada uno de los elementos en log2, así es como lo haría. Aunque no estoy seguro de cómo accedería a los elementos individuales. Supongo que podrías construir un foreach (string s en log1) para eso. Nota: Nunca he usado el tipo HashSet, y supongo que –

Respuesta

7

mediante LINQ:

log1.Intersect(log2).Any() 

Ver IntersectExcept y en MSDN.

+0

count() o any() ....? –

+0

@RoyiNamir - 'Any()' es mejor. – Oded

+0

@RoyiNamir Si necesita comprobar si hay monedas en un frasco, no tiene que contar, en su lugar, verifique si hay alguna. – Sandeep

1

¿Has visto la función ExceptWith?

Elimina todos los elementos de la colección especificada del objeto HashSet actual.