2012-05-17 23 views
5

Ich habe zwei HashSets wie folgt aus:Vergleichen Sie zwei Hashsets?

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

Wie würde ich die beiden vergleichen?

Ich möchte sicherstellen, dass log2 keine Einträge von log1 enthält. Mit anderen Worten, ich möchte alle (falls vorhanden) Elemente entfernen, die log1 innerhalb log2 hat.

+0

Schritt durch jedes Element in log1 und vergleichen Sie sie mit jedem der Elemente in log2, so würde ich es tun. Obwohl ich nicht sicher bin, wie Sie auf einzelne Elemente zugreifen würden. Ich nehme an, Sie könnten in der Lage sein, eine Foreach (String s in Log1) dafür zu konstruieren? Hinweis: Ich habe den HashSet-Typ noch nie verwendet, und ich vermute –

Antwort

7

LINQ verwenden:

log1.Intersect(log2).Any() 

Siehe Intersect und Except auf MSDN.

+0

count() oder any() ....? –

+0

@RoyiNamir - 'Any()' ist besser. – Oded

+0

@RoyiNamir Wenn Sie überprüfen müssen, ob es Münzen in einem Glas gibt, müssen Sie nicht zählen, sondern prüfen, ob es welche gibt? – Sandeep

1

Haben Sie die ExceptWith Funktion gesehen?

Entfernt alle Elemente in der angegebenen Auflistung aus dem aktuellen HashSet-Objekt.