Hallo zusammen,
ich habe eine Liste mit Dictionaries mit den Keys "Column_1", "Column_2", "Column_3"
Außerdem eine List in der die Keys stehen nach dem ich das Dictionary gruppieren möchte.
List<string> GroupColumns = { "Column_1", "Column_2" };
Ich möchte nun das Dictionary nach den GroupColumns gruppieren und finde es schwierig das umzusetzen.
List<Dictionary<string, string>> data = new List<Dictionary<string, string>>();
Dictionary<string, string> d1 = new Dictionary<string, string>();
d1.Add("Column_1", "A");
d1.Add("Column_2", "B");
d1.Add("Column_3", "C");
Dictionary<string, string> d2 = new Dictionary<string, string>();
d2.Add("Column_1", "E");
d2.Add("Column_2", "B");
d2.Add("Column_3", "C");
Dictionary<string, string> d3 = new Dictionary<string, string>();
d3.Add("Column_1", "G");
d3.Add("Column_2", "B");
d3.Add("Column_3", "C");
data.Add(d1);
data.Add(d2);
data.Add(d3);
List<string> groupColumns = new List<string>{ "Column_1", "Column_2" };
var grouped = data.GroupBy(x => x[groupColumn[0]]); // nach einem column funktioniert
// -> Ergebnis
// A
// E
// Ich möchte aber nun nach den Columns in der Liste gruppieren, hat jemand eine Idee?
// -> Ich möchte folgendes Ergebnis:
// A B
// E B
// G B
Ich möchte aber nun nach den Columns in der Liste gruppieren, hat jemand eine Idee?
Stecke hier fest. Vielen Dank schonmal:)
Vll. ist ein Dictionary einfach die falsche Datenstruktur?
http://blogs.msdn.com/b/dotnet/archive/2014/08/05/multidictionary-becomes-multivaluedictionary.aspx
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Moin,
so wie ich das verstanden habe, wird ein Dictionary gar nicht so angelegt wie z.B. eine List. Der klassische Anwendungsfall ist ja die Suche nach einem "Value" mittels "Key". Einen Wert kann man auch nicht über den klassichen "Index" suchen, weil es den in dieser Form nicht gibt, bzw. weil der Index nicht die von dir erwarteten Ergebnisse fördern würde.
Eine Struktur die ich stattdessen empfehlen würde, wäre entweder eine List<Tuple<Value, Value>> oder eine List<KeyValuePair<Key, Value>> wenn der Schlüssel unique sein soll.
Ich weiß aber natürlich nicht wie "schön" das im Allgemeinen ist. Aber es funktioniert und ich habe die ganzen Enumerable-Funktionen, die es beim Dictionary nicht gibt.
LG
Da kam eine Stimme aus dem Off: "Lächele, es könnte schlimmer kommen!" Ich lächelte. Und es kam schlimmer...
Ich habe nochmal schnell nachgelesen. Es gibt tatsächlich keinen Index -
weil es den in dieser Form nicht gibt, bzw. weil der Index nicht die von dir erwarteten Ergebnisse fördern würde.
der zweite Halbsatz kann also getrost vergessen werden.
Ich hab aber was gefunden:
https://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx
Vielleicht hilft das. Ich selbst habe allerdings keine Erfahrung damit gemacht sondern das auch nur gelesen 😉
Lieben Gruß
Da kam eine Stimme aus dem Off: "Lächele, es könnte schlimmer kommen!" Ich lächelte. Und es kam schlimmer...