Ich habe das folgende Objekt in einer Liste:
public class DemoClass
{
public int GroupKey { get; set; }
public string DemoString { get; set; }
public object SomeOtherProperty { get; set; }
}
Jetzt möchte ich folgendes Wörterbuch daraus erstellen:
Dictionary<int, List<DemoClass>>
Ich möchte die List<DemoClass>
nach der Eigenschaft gruppieren GroupKey
, aber ich verstehe nicht, wie dies gemacht wird und etwas Hilfe.
Nachdem ich ein wenig nachgedacht hatte, erreichte ich das erforderliche Verhalten mit:
var groupedDemoClasses = from demoClass in mySepcialVariableWhichIsAListOfDemoClass
group demoClass by demoClass.GroupKey
into groupedDemoClass
select groupedDemoClass;
var neededDictionary = groupedDemoClass.ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
Aber gibt es eine Möglichkeit, dies zu einer einzigen Aussage zu machen?
Sie haben es bereits zu einem Einzeiler gemacht. Setzen Sie einfach das
ToDictionary
am Ende Ihrer ersten Zeile. Wenn Sie möchten, dass es kürzer wird, verwenden Sie die Syntax der funktionalen Komposition anstelle der Abfragesyntax.quelle
Ich gehe hier etwas vom Thema ab, aber ich bin zu diesem Thread gekommen, weil ich nach einer Möglichkeit gesucht habe, ein Wörterbuch eines Wörterbuchs in Linq zu erstellen, und die Konversation hier hat mich zur Antwort geführt ...
Mit linq können Sie mehrstufige Wörterbücher erstellen. Dies ist nützlich für Szenarien, in denen Sie mehr als einen Schlüssel oder eine Dimension haben, nach der Sie suchen möchten. Der Trick besteht darin, eine Gruppierung zu erstellen und diese dann wie folgt in ein Wörterbuch zu konvertieren:
Die resultierende Abfrage kann wie folgt verwendet werden:
Ich hoffe, dies ist hilfreich für alle anderen, die diese Art von Abfrage benötigen.
quelle