2014-04-26 4 views
1

je veux vérifier la présence de certains éléments donnés dans la collection et pensé qu'il fonctionne comme cela, mais il neVérifier la présence des éléments donnés dans une collection

public static bool ContainsAny<T>(this IEnumerable<T> collection, IEnumerable<T> otherCollection) 
{ 
     if (otherCollection == null) 
      throw new ArgumentNullException("otherCollection", ExceptionResources.NullParameterUsed); 
     if (collection == null) 
      throw new ArgumentNullException("collection", ExceptionResources.ExtensionUsedOnNull); 
     else 
      return Enumerable.Any<T>(otherCollection, new Func<T, bool>(((Enumerable)collection).Contains<T>)); 
} 

Je veux true si la collection spécifiée contient l'un des éléments otherCollection, sinon false. Mais une erreur m'indique que je ne peux pas convertir system.collections.generic.iEnumerable> T> dans system.linq.Enumberable. Où est mon erreur?

+0

Vous devez penser à la réponse souhaitée lorsque l'une des collections est vide (et non nulle). Pas aussi trivial que ça en a l'air. –

Répondre

3

Cela devrait fonctionner:

return otherCollection.Any(collection.Contains); 

Vous n'avez pas besoin d'appeler cast Contains méthode, car il y a déjà un extension method qui prend un IEnumerable<T> comme premier paramètre.

+0

super, ça marche: D merci – patdhlk

Questions connexes