Heim >Backend-Entwicklung >C++ >Wie kann ich Daten nach einem bestimmten Schlüssel mit den Gruppen- und Tolookup -Methoden von LINQ gruppieren?

Wie kann ich Daten nach einem bestimmten Schlüssel mit den Gruppen- und Tolookup -Methoden von LINQ gruppieren?

Linda Hamilton
Linda HamiltonOriginal
2025-02-02 00:11:09907Durchsuche

How Can I Group Data by a Specific Key Using LINQ's GroupBy and ToLookup Methods?

lINQ: Gruppierung von Daten nach Schlüssel mit GroupBy und ToLookup

gruppieren

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn