2017-05-08 6 views
0

Ich habe eine Reihe von KVP ihre Werte wie diese SieC# KVP Sortierung - ändern Sortierung

[month],[January] 
[year],[1990] 
[month],[April] 
[year],[2001] 
[month],[February] 
[year],[1991] 
[month],[February] 
[year],[1992] 
[month],[April] 
[year],[2002] 
[month],[March] 
[year],[2000] 

brauchen diese

[month],[January] 
[month],[April] 
[month],[February] 
[month],[February] 
[month],[April] 
[month],[March] 
[year],[1990] 
[year],[2001] 
[year],[1991] 
[year],[1992] 
[year],[2002] 
[year],[2000] 

wie diese sortiert werden soll, wird die Sortierfunktion

aussehen könnte
indexValuesToCountOnce.Sort((x, y) => x.Value.Length.CompareTo(y.Value.Length)); 

Allerdings finde ich den Code unvorhersehbar für mich. Es scheint zuerst die Spalte "Monate" nach der Länge des String-Monats zu sortieren, nicht die Reihenfolge, in der sie im KVP war.

Gibt es eine Möglichkeit, dies so zu sortieren, wie ich es brauche?

Antwort

2

Es sieht aus wie Sie gerade eine alphabetische Sortierung nach dem Schlüssel wollen:

list = x.OrderBy(kvp => kvp.Key).ToList(); 
+0

Haveing ​​Probleme, könnte es denn sein, wie meine Liste definiert ist? 'code' Liste > indexValuesToCountOnce = new Liste >(); – Krom

+0

@Krom Das sollte gut funktionieren. Ersetzen Sie einfach 'x' in meinem Code durch' indexValuesToCountOnce' und setzen Sie 'var' vor' list'. – itsme86

+0

Dies erfordert die Verwendung von System.Linq; Ich glaube. Ich bin nicht in Visual Studio, also kann ich nicht einfach eine Referenz hinzufügen – Krom