2016-06-05 5 views
1

ein Wörterbuch haben, machen wir es Schlüsselwertpaar wie folgt sein:C# - Die Suche nach der Anzahl der gerade/ungerade Werte in einem Wörterbuch

a - 1 
b - 3 
c - 2 

Ich möchte die Anzahl der ungeraden, um herauszufinden, und sogar Wert Zeichen . Zum Beispiel gibt das Obige mir 2 ungerade und 1 gerade zurück.

Ich dachte über das Iterieren nach, aber ich lese, dass das Iterieren der falsche Weg ist, wenn wir ein Wörterbuch benutzen. Was ist der beste Ansatz?

+2

Wo haben Sie gelesen „Iterieren ist der falsche Weg, wenn wir ein Wörterbuch verwenden“? Wenn das Iterieren über ein Wörterbuch schlecht ist, würde es IEnumerable/Enumerator wahrscheinlich nicht implementieren. – Tdorno

+0

ein Stackover Flow Kommentar vor dem Schreiben dieser Frage. Entschuldigung, habe keinen Link aber – John

+0

Diese Werte sind Integer nicht char. Wert im Wörterbuch ist nicht indiziert. – Paparazzi

Antwort

4

Verwendung LINQ:

var numOdd = myDic.Count(e => e.Value % 2 == 1); 
+0

Ich mag diesen Ansatz !!! – John

+1

@John Es iteriert immer noch über das Wörterbuch, obwohl ich glaube, dass es nicht möglich ist, das Iterieren über das Wörterbuch zu vermeiden und zu tun, was Sie wollen. – Casey

0

Siehe diesen Link What is the best way to iterate over a Dictionary in C#?, Iteration intern oder extern ist erforderlich.

Der Code sollte etwas wie folgt sein. Es identifiziert zuerst die Anzahl von Evens, dann wird die Anzahl von Odd Gesamtelementen minus Ereignisnummern sein.

int evenCounter=0; 
    foreach(var item in myDictionary.Values) 
    { 
     if(item %2 ==0) 
     evenCounter++; 
    } 

    int oddCounter = myDictionary.Count -evenCounter; 
+0

Okay, ich habe das gleiche getan, aber mir wurde gesagt, dass Sie kein Wörterbuch verwenden sollten, wenn es um das Wiederholen geht. oh well .. – John

+0

Das ist genau das, was das OP gesagt hat, dass sie darüber nachgedacht haben, aber nach einem anderen Ansatz fragen. – jdphenix

+0

Wir brauchen keine Schlüssel, um die Anzahl der Quoten zu ermitteln. Sie können also einfach Arrays zum Speichern verwenden und einfach über die Arrays iterieren, wenn Ihnen das gefällt. – Memin

Verwandte Themen