Heim >Backend-Entwicklung >C++ >Wie kann der Gruppe von LINQs GroupBy -Operator Objekte effizient basierend auf freigegebenen Eigenschaftswerten effizient aggregieren?
Effiziente Verwendung des LINQ GroupBy -Operator
In der von der Objektorientierten Programmierung ist die Situation mehrerer Objekte, die bestimmte Attribute teilen, üblich. Zum Beispiel enthält die "Person" -Klasse "ID" und die Autoliste. Um ein Auto klar und effizient zu aggregieren, können wir den "GroupBy" -Portierer von Linq verwenden.
GroupBy -Operator unterteilt die Objektsequenz in eine kleinere Gruppe gemäß dem Wert des angegebenen Schlüssels. In unserer Kategorie "Person" können wir die Eigenschaft "Personid" als Schlüssel für Gruppenobjekte verwenden. Dies erzeugt effektiv eine Struktur, die einem Wörterbuch ähnlich ist, wobei der Schlüssel der einzige "personidische" Wert ist, und der Wert ist eine Liste der mit jeder "Personid" verbundenen "Autowerte".
Code Beispiel
Um das Objekt "Person" zu gruppieren und die entsprechende Autoliste gemäß "Personid" abzurufen, können wir den folgenden LINQ -Abfrageausdruck verwenden:
oder wir können nicht -query -Ausdrücke verwenden, um die gleichen Ergebnisse zu erzielen:
Ergebnisse
<code class="language-csharp">var results = from p in persons group p.car by p.PersonId into g select new { PersonId = g.Key, Cars = g.ToList() };</code>
"Ergebnisse" -Variablen enthalten jetzt eine Sammlung eines anonymen Objekts, das zwei Attribute enthält:
<code class="language-csharp">var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() });</code>
"Personid": Die einzige ID einer Person "Autos": Die Liste des gesamten Autos, das der Person gehört
Durch die Iteration der "Ergebnisersammlung" können wir die erforderlichen Informationen zu jeder einzelnen "Personid" erhalten.
oder Sie können die "Lookup" -Methode anstelle von "GroupBy" verwenden, um ähnliche Ergebnisse zu erzielen. "Lookup" erstellt effektiv eine Wörterbuchstruktur, wobei der Schlüssel der einzige "personidische" Wert ist, und der Wert ist eine Sammlung von "Auto" -Werten, die jeder "Personid" zugeordnet sind. Um das Auto des Autos abzurufen, können wir die folgende Syntax verwenden:
Das obige ist der detaillierte Inhalt vonWie kann der Gruppe von LINQs GroupBy -Operator Objekte effizient basierend auf freigegebenen Eigenschaftswerten effizient aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!