Maison >développement back-end >C++ >.NET offre-t-il un moyen intégré de vérifier si une liste contient tous les éléments d'une autre ?

.NET offre-t-il un moyen intégré de vérifier si une liste contient tous les éléments d'une autre ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-01 01:14:18510parcourir

Does .NET Offer a Built-in Way to Check if One List Contains All Elements of Another?

.NET dispose-t-il d'une méthode intégrée pour vérifier si une liste contient tous les éléments d'une autre ?

Problème :

Vous disposez d'une méthode (ContainsAllItems) qui détermine si List a contient tous les éléments de List b. Vous vous demandez si cette fonctionnalité est déjà intégrée à .NET, ce qui pourrait potentiellement dupliquer vos efforts.

Réponse :

Oui, dans .NET 3.5 et versions ultérieures, vous pouvez utiliser le suivant méthode :

public static class LinqExtras
{
    public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b)
    {
        return !b.Except(a).Any();
    }
}

Utilisation :

List<int> a = new List<int>() { 1, 2, 3, 4 };
List<int> b = new List<int>() { 2, 3 };

bool result = a.ContainsAllItems(b); // True

Cette méthode effectue une différence définie entre b et a (b.Except(a)), qui renvoie le éléments de b qui ne sont pas dans a. La méthode Any() est ensuite utilisée pour vérifier s'il y a des éléments dans la différence définie, et le résultat est inversé pour déterminer si a contient tous les éléments de b.

Remarque :

La méthode ContainsAllItems originale est également une solution valable mais est légèrement moins efficace que l'approche utilisant LINQ. La version LINQ profite d'une évaluation paresseuse, effectuant potentiellement moins de travail si les listes contiennent un grand nombre d'éléments.

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