c # ToDictionary mit ContainsKey-Prüfung

7

Ich habe eine Liste, die ich in ein Wörterbuch einfügen möchte. Der Einfachheit halber sind die eingegebenen Werte alle gleich.

Ich kann eine foreach-Schleife verwenden.

%Vor%

Das obige funktioniert.

Aber ich möchte ToDictionary tun das gleiche auf folgende Weise -

%Vor%

Das scheitert natürlich, weil ich zweimal "Wasser" hinzufüge.

Was ist die korrekte Art der Überprüfung auf doppelte Einträge bei der Verwendung von ToDictionary?

    
Bryan 29.03.2012, 18:46
quelle

2 Antworten

14

Sie könnten Distinct() verwenden, um Duplikate herauszufiltern:

%Vor%

Derselbe Ansatz würde Ihre traditionelle Schleife auch viel klarer machen, da Sie nicht "manuell" nach Duplikaten suchen müssen:

%Vor%     
BrokenGlass 29.03.2012, 18:47
quelle
7

Distinct ist eine Option, die das Problem mit doppelten Schlüsseln vermeidet. Wenn Sie eine Anzahl von Duplikaten benötigen, können Sie versuchen, etwas wie diese GroupBy wie folgt:

%Vor%

Wenn Ihre Anwendung nicht einfach eine einfache String-List / Duplicate-Count-Struktur ist, erhalten Sie möglicherweise eine andere Struktur wie zB Lookup , die Sie durch Aufruf der ToLookup -Erweiterung bekommen können - oder möglicherweise gehen mit einer Gruppierung wie die GroupBy , die ich oben verwendet habe.

    
devgeezer 30.03.2012 15:50
quelle