Maison >développement back-end >C++ >Comment puis-je regrouper des objets par une clé en utilisant LINQ en C #?

Comment puis-je regrouper des objets par une clé en utilisant LINQ en C #?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-02-02 00:21:10852parcourir

How Can I Group Objects by a Key Using LINQ in C#?

Utilisez l'objet de groupe de bouton LINQ

Dans la programmation orientée objet, il est très utile en fonction des attributs publics ou des objets de groupe de clés. Cet exemple discute de la façon d'utiliser LINQ (intégration linguistique) selon l'objet du groupe PersonID et d'obtenir une liste de voitures associée à tout le monde.

Supposons que nous ayons une classe appelée personne:

<code class="language-csharp">class Person
{
    public int PersonID;
    public string Car; // 将car改为Car,符合C#命名规范
}</code>
Nous avons également une liste d'objets de personne:

<code class="language-csharp">List<Person> persons;</code>
Cette liste peut contenir plusieurs instances avec le même PersonID. Par exemple:

<code class="language-csharp">persons = new List<Person>()
{
    new Person { PersonID = 1, Car = "Ferrari" },
    new Person { PersonID = 1, Car = "BMW" },
    new Person { PersonID = 2, Car = "Audi" }
};</code>
Notre objectif est de regrouper ces objets selon PersonID et d'obtenir une liste de toutes les voitures appartenant à tout le monde. Les résultats attendus sont présentés ci-dessous:

<code class="language-csharp">class Result
{
    public int PersonID;
    public List<string> Cars;
}</code>
Après le regroupement, nous obtiendrons:

<code class="language-csharp">// 示例结果,实际结果由LINQ查询生成
var results = new List<Result>()
{
    new Result { PersonID = 1, Cars = new List<string> { "Ferrari", "BMW" } },
    new Result { PersonID = 2, Cars = new List<string> { "Audi" } }
};</code>
Pour cette raison, nous pouvons utiliser la méthode groupby de Linq:

<code class="language-csharp">var results = from p in persons
              group p.Car by p.PersonID into g
              select new Result { PersonID = g.Key, Cars = g.ToList() };</code>
Dans la clause Groupby, nous spécifions PersonID en tant que clé de groupe et prévoyons la propriété de la voiture. La séquence générée sera un ensemble de clés associées à leurs voitures respectives.

ou, vous pouvez utiliser le dictionnaire de recherche pour obtenir les mêmes résultats:

<code class="language-csharp">var carsByPersonId = persons.ToLookup(p => p.PersonID, p => p.Car);</code>
Cela créera un dictionnaire, où la clé est PersonID, et la valeur est la liste des voitures de chacun. Pour rechercher une voiture spécifique, vous pouvez utiliser:

<code class="language-csharp">// 这将返回一个空序列,对于查找中不存在的personId
var carsForPerson = carsByPersonId[personId];</code>
En utilisant ces technologies, vous pouvez utiliser C # et LINQ pour suivre efficacement les objets de liaison publique et récupérer la liste des données connexes de manière simple et efficace. L'exemple de code a été amélioré, ce qui est plus conforme aux spécifications de codage de C #.

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:
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