lINQ: Gruppierung von Daten nach Schlüssel mit GroupBy
und ToLookup
lINQ liefert effiziente Methoden zum Gruppieren von Daten basierend auf bestimmten Kriterien. Dies ist besonders nützlich, wenn sie sich mit Sammlungen von Objekten befassen und Informationen basierend auf einem gemeinsamen Schlüssel aggregieren müssen.
veranschaulichen wir mit einer Person
Klasse:
<code class="language-csharp">class Person { public int PersonID { get; set; } public string Car { get; set; } }</code>
Betrachten Sie eine Liste von Person
Objekten, bei denen einige Personen möglicherweise mehrere Einträge haben (z. B. mehrere Autos besitzen):
<code class="language-csharp">List<Person> persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };</code>
, um diese Personen nach PersonID
zu gruppieren und ihre Autos aufzulisten, verwenden wir die GroupBy
-Methode von Linq:
<code class="language-csharp">var results = persons.GroupBy(p => p.PersonID, p => p.Car);</code>
results
ist ein IEnumerable<IGrouping<int, string>>
. Jedes IGrouping
repräsentiert eine Gruppe mit einem gemeinsamen PersonID
(über result.Key
zugänglich) und enthält eine Sequenz von Autozeichenfolgen (result
). Sozug auf diese Daten:
<code class="language-csharp">foreach (var result in results) { int personID = result.Key; List<string> cars = result.ToList(); // Convert to List for easier access Console.WriteLine($"Person ID: {personID}, Cars: {string.Join(", ", cars)}"); }</code>
Alternativ erstellt ToLookup
eine wörterbuchartige Struktur (ILookup<int, string>
):
<code class="language-csharp">var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);</code>
Zugriff auf Daten ist dann einfacher:
<code class="language-csharp">List<string> carsForPerson1 = carsByPersonID[1].ToList(); Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");</code>
Sowohl GroupBy
als auch ToLookup
bieten effiziente Möglichkeiten, Daten basierend auf einem Schlüssel zu gruppieren, wodurch die Datenmanipulation in LINQ mehr optimiert werden. ToLookup
bietet direkten wörterbuchähnlichen Zugriff, während GroupBy
mehr Flexibilität für komplexe Gruppierungsszenarien bietet.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten nach einem bestimmten Schlüssel mit den Gruppen- und Tolookup -Methoden von LINQ gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!