Maison > développement back-end > C++ > Comment LINQ peut-il filtrer efficacement les éléments d'une liste en fonction de la présence d'éléments dans une autre liste ?

Comment LINQ peut-il filtrer efficacement les éléments d'une liste en fonction de la présence d'éléments dans une autre liste ?

Barbara Streisand
Libérer: 2025-01-19 18:27:10
original
242 Les gens l'ont consulté

How Can LINQ Efficiently Filter Items in One List Based on the Presence of Items in Another List?

Utilisez la requête LINQ pour filtrer les éléments de la liste

LINQ fournit un moyen efficace de filtrer les éléments d'une liste selon que l'élément existe ou non dans une autre liste. Veuillez consulter l'exemple de code ci-dessous :

<code class="language-csharp">class Program
{
    static void Main(string[] args)
    {
        // 示例数据
        List<Person> peopleList1 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 } };
        List<Person> peopleList2 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 }, new Person() { ID = 4 }, new Person() { ID = 5 } };
    }
}

class Person
{
    public int ID { get; set; }
}</code>
Copier après la connexion

Nous devons trouver les éléments de peopleList2 qui ne sont pas dans peopleList1. Ceci peut être réalisé via LINQ.

Utilisez la méthode Except()

LINQ fournit la méthode Except(), qui renvoie tous les éléments de la première liste qui ne figurent pas dans la deuxième liste. On peut l'utiliser comme suit :

<code class="language-csharp">var result = peopleList2.Except(peopleList1);</code>
Copier après la connexion

Cela renverra une collection contenant des personnes avec les identifiants 4 et 5.

Utiliser la syntaxe de requête LINQ

LINQ nous permet également d'effectuer des opérations de filtrage en utilisant la syntaxe de requête. Voici une façon d'obtenir le même résultat en utilisant la syntaxe de requête :

<code class="language-csharp">var result = from p in peopleList2
             where !peopleList1.Any(p2 => p2.ID == p.ID)
             select p;</code>
Copier après la connexion

Cette requête produit les mêmes résultats que la méthode Except().

Description des performances :

Il convient de noter que la complexité temporelle des deux méthodes est O(n*m), où n et m sont les tailles des deux listes comparées. Cela signifie qu'à mesure que la taille de la liste augmente, le temps requis pour l'opération de filtrage augmente considérablement. Pour les grands ensembles de données, d’autres méthodes devront peut-être être explorées pour optimiser les performances.

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!

source:php.cn
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