Laden...

Dictionary nach Items in Liste gruppieren

Erstellt von Sythus vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.587 Views
S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 8 Jahren
Dictionary nach Items in Liste gruppieren

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:)

742 Beiträge seit 2005
vor 8 Jahren
J
34 Beiträge seit 2015
vor 8 Jahren
Dictionary funktioniert anders

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...

J
34 Beiträge seit 2015
vor 8 Jahren
Kein Index für Dictionaries

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...