2010-02-18 2 views

Répondre

4

Vous pouvez émuler cette via .Intersect() et vérifiez si l'ensemble d'intersection a tous les éléments requis. Je suppose que c'est assez inefficace mais rapide et sale.

List<T> list = ... 
List<T> shouldBeContained = ... 
bool containsAll = (list.Intersect(shouldBeContained).Count == shouldBeContained.Count) 

Ou vous pourriez le faire avec .All(). Je suppose que cela est plus efficace et plus propre:

List<T> list = ... 
List<T> shouldBeContained = ... 
bool containsAll = (shouldBeContained.All(x=>list.Contains(x)); 
0

Linq a un certain nombre d'opérateurs qui peuvent être utilisés pour vérifier l'existence d'un ensemble de valeurs dans une autre.

J'utiliser Intersect:

Produces the set intersection of two sequences by using the default equality comparer to compare values.

0

Bien qu'il n'y ait rien de facile qui est construit en ... vous pouvez toujours créer des méthodes d'extension pour faciliter la vie:

public static bool ContainsAny<T>(this IEnumerable<T> data, 
    IEnumerable<T> intersection) 
{ 
    foreach(T item in intersection) 
     if(data.Contains(item) 
      return true; 
    return false; 
} 

public static bool ContainsAll<T>(this IEnumerable<T> data, 
    IEnumerable<T> intersection) 
{ 
    foreach(T item in intersection) 
     if(!data.Contains(item)) 
      return false; 
    return true; 
} 
Questions connexes