2017-06-07 1 views
0

Ich habe eine Liste von Elementen (eigentlich ein IEnumerable). Jeder Artikel hat eine Liste von Werten. Zum Beispiel:Mit Linq Listen innerhalb einer Liste bestellen

Item1.Value[0] = "Health & Safety" 
Item1.Value[1] = "Economic" 
Item1.Value[2] = "Environment" 

Item2.Value[0] = "Reputation" 
Item2.Value[1] = "Environment" 
Item2.Value[2] = "Regulatory" 

... 

Wie kann ich die Liste der Werte mit Linq bestellen? Ich weiß, ich kann die Liste der Einzelteile bestellen etwas mit wie:

Items.Orderby (x => x.something)

... aber wie kann ich auf die Liste der Werte in jedem Element erhalten?

Antwort

0

können Sie diese versuchen

Items.ForEach(i=> x.something = x.something.OrderBy(o=> o.field)); 
0

EDIT: Basierend off OP Kommentar, Value ein Dictionary<string, object> ist. Sie können Dictionary nicht sortieren, da sie vom Design ungeordnet sind.

Betrachten wir ein SortedDictionary<TKey, TValue> verwenden und implementieren eine IComparer<TKey> Ihre Sortierbedarf zu passen:


Beispiel:

Dictionary<string, object> values = new Dictionary<string, object> 
{ 
    { "b", 1 }, { "a", 2 }, { "c", 3 } 
}; 

// { { "a", 2 }, { "b", 1 }, { "c", 3 } } 
SortedDictionary<string, object> keyAscending = 
    new SortedDictionary<string, object>(values); 

public class ReverseStringComparer : IComparer<string> 
{ 
    int IComparer<string>.Compare(string x, string y) 
    { 
     return y.CompareTo(x); 
    } 
} 

// { { "c", 3 }, { "b", 1 }, { "a", 2 } } 
SortedDictionary<string, object> keyDescending = 
    new SortedDictionary<string, object>(values, new ReverseStringComparer()); 
+0

Eigentlich Wert ist ein Wörterbuch, in dem der Schlüssel ein String ist und der Wert ist ein Objekt. Ich habe folgendes versucht, aber es scheint nichts zu tun: items.ToList(). ForEach (x => x.Values.OrderBy (y => y.Key)). – gib65

+0

Meine Antwort wurde aktualisiert. Vielleicht möchten Sie ein 'SortedDictionary' verwenden. –