Maison >développement back-end >C++ >Comment LINQ peut-il identifier efficacement les éléments uniques à une liste parmi plusieurs listes ?
Utilisez LINQ pour déterminer des éléments uniques dans une liste
Nous devons identifier les éléments qui n'existent que dans une liste et pas dans d'autres listes. LINQ fournit une solution intéressante à ce défi.
Considérez l'extrait de code suivant :
<code class="language-csharp">class Program { static void Main(string[] args) { // 初始化两个Person对象列表。 List<Person> peopleList1 = new List<Person>(); peopleList1.Add(new Person() { ID = 1 }); peopleList1.Add(new Person() { ID = 2 }); peopleList1.Add(new Person() { ID = 3 }); List<Person> peopleList2 = new List<Person>(); peopleList2.Add(new Person() { ID = 1 }); peopleList2.Add(new Person() { ID = 2 }); peopleList2.Add(new Person() { ID = 3 }); peopleList2.Add(new Person() { ID = 4 }); peopleList2.Add(new Person() { ID = 5 }); } } class Person { public int ID { get; set; } }</code>
Supposons que nous voulions déterminer quelles personnes de peopleList2 n'existent pas dans peopleList1. Pour ce faire, nous pouvons utiliser la méthode Where() de LINQ.
Une solution consiste à utiliser la méthode Any() :
<code class="language-csharp">var result = peopleList2.Where(p => !peopleList1.Any(p2 => p2.ID == p.ID));</code>
Cette requête vérifie chaque personne dans peopleList2 pour voir s'il y a quelqu'un dans peopleList1 avec le même identifiant. S’il n’y a pas de correspondance, la personne est incluse dans les résultats.
Ou, une manière plus concise d'exprimer la même logique est :
<code class="language-csharp">var result = peopleList2.Where(p => peopleList1.All(p2 => p2.ID != p.ID));</code>
Dans ce cas, All() vérifie si l'ID de toutes les personnes dans peopleList1 est différent de l'ID de la personne actuelle dans peopleList2. Si cette condition est vraie, la personne est incluse dans les résultats.
Remarque : Il est important de noter que les deux méthodes effectuent des opérations O(n*m), ce qui peut entraîner des problèmes de performances sur de grands ensembles de données. Des méthodes supplémentaires peuvent être nécessaires pour optimiser les performances. La syntaxe LINQ fournie fournit une solution simple au problème, mais il est toujours recommandé de l'évaluer en fonction des exigences de performances du projet.
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!