2017-05-17 3 views
0

Ich habe ein Array von Strings, die als "ColX=Name=Value" formated sind, wobei X eine Zahl und X> = 4.C# Ordnungs Array von Strings

Ich mag würde das Array in aufsteigender Reihenfolge, dass X sortieren, ich habe versucht,
int colNbr = int.parse(string.Split('=')[0].Substring(3))
mit dem Wert von X, retreive aber dann weiß ich nicht, wie die Saiten bestellen:/

einfache Empfehlungen geschätzt :)

Antwort

0

Sie könnten Sie Erweiterungsmethode OrderBy.

string[] sortedArrayString = arrayOfString 
    .OrderBy(str => int.parse(str.Split('=')[0].Substring(3))) 
    .ToArray(); 
+0

Dies ist die im Einklang mit dem, was ich bereits arbeite, versuche ich dies. – Saryk

1

Sie sind fast mit der Logik, wollte nur einen Versuch mit OrderBy versuchen. Der folgende Code wird Ihnen helfen, das zu vervollständigen?

List<string> inputList = SomeMethod(); // will populate the list 
inputList = inputList.OrderBy(x=> int.parse(x.Split('=')[0].Substring(3))).ToList(); 
1

Versuchen mit Klassen (anonymen im Kontext) arbeiten, nicht roh string s:

string[] source = ... 

var data = source 
    .Select(line => line.Split('=')) 
    .Select(items => new {   // Let's have classes 
     Col = int.Parse(items[0].Substring(3)), 
     Name = items[1], 
     Value = items[2], }) 
    .OrderBy(item => item.Col);  // ... which are easy to handle (e.g. sort) 

Bitte, dass Hinweis, wenn Sie sich entscheiden, sagen wir, sortiert nach Name innerhalb der gegebenen Col alles, was Sie tun müssen, ist hinzuzufügen .ThenBy(item => item.Name): Klassen sind einfach zu pflegen.

Wenn Sie die string[] zurück erhalten möchten:

string[] sorted = data 
    .Select(item => $"Col{item.Col},{item.Name},{item.Value}") 
    .ToArray();