Maison > développement back-end > C++ > Comment puis-je regrouper les données par une clé spécifique en utilisant les méthodes Groupby et Tolookup de Linq?

Comment puis-je regrouper les données par une clé spécifique en utilisant les méthodes Groupby et Tolookup de Linq?

Linda Hamilton
Libérer: 2025-02-02 00:11:09
original
960 Les gens l'ont consulté

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

linq: regrouper les données par clé avec GroupBy et ToLookup

LINQ fournit des méthodes efficaces pour regrouper des données en fonction de critères spécifiques. Ceci est particulièrement utile pour traiter les collections d'objets et avoir besoin d'agréger les informations basées sur une clé commune.

illustrons avec une classe Person:

class Person
{
    public int PersonID { get; set; }
    public string Car { get; set; }
}
Copier après la connexion

Considérons une liste d'objets Person, où certaines personnes peuvent avoir plusieurs entrées (par exemple, posséder plusieurs voitures):

List<Person> persons = new List<Person>()
{
    new Person { PersonID = 1, Car = "Ferrari" },
    new Person { PersonID = 1, Car = "BMW" },
    new Person { PersonID = 2, Car = "Audi" }
};
Copier après la connexion

pour regrouper ces personnes par PersonID et énumérer leurs voitures, nous utilisons la méthode de Linq GroupBy:

var results = persons.GroupBy(p => p.PersonID, p => p.Car);
Copier après la connexion

results est un IEnumerable<IGrouping<int, string>>. Chaque IGrouping représente un groupe avec un PersonID (accessible via result.Key) et contient une séquence de chaînes de voiture (result). Pour accéder à ces données:

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)}");
}
Copier après la connexion

Alternativement, ToLookup crée une structure de type dictionnaire (ILookup<int, string>):

var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);
Copier après la connexion

L'accès aux données est alors plus simple:

List<string> carsForPerson1 = carsByPersonID[1].ToList();
Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");
Copier après la connexion

à la fois GroupBy et ToLookup offrent des moyens efficaces de regrouper les données en fonction d'une clé, ce qui rend la manipulation de données dans LINQ plus rationalisée. ToLookup fournit un accès direct de type dictionnaire, tandis que GroupBy offre plus de flexibilité pour les scénarios de regroupement complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal