Maison >développement back-end >C++ >Comment puis-je regrouper des objets par une clé en utilisant LINQ en C #?
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!