.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!