474 votes

Linq .Une VS .Existe - quelle est la différence?

À l'aide de Linq sur les collections, quelle est la différence entre les lignes de code suivantes?

if(!coll.Any(i => i.Value))

et

if(!coll.Exists(i => i.Value))

Mise à jour 1

Quand j'ai démonter .Existe il semble comme il n'y a pas de code.

Mise à jour 2

Quelqu'un sait pourquoi il n'y a pas de code pour ce que c'est?

471voto

Meinersbur Points 3511

Voir la documentation

Liste.Existe (méthode de l'Objet)

Détermine si la Liste(T) contient des éléments qui répondent aux conditions définies par le prédicat.

Cela existe depuis .NET 2.0, donc avant de LINQ. Destiné à être utilisé avec le Prédicat délégué, mais les expressions lambda sont rétro-compatibles. Aussi, juste la Liste a (pas même de IList)

IEnumerable.Tout (méthode d'Extension)

Détermine si un élément d'une séquence satisfait à une condition.

Ce qui est nouveau dans .NET 3.5 et utilise la touche Func(TSource, bool) comme argument, c'était donc destiné à être utilisé avec les expressions lambda et LINQ.

Dans le comportement, elles sont identiques.

223voto

JaredPar Points 333733

La différence, c'est que Tout est une méthode d'extension pour n'importe quel IEnumerable<T> défini sur le Système.Linq.Énumérable. Il peut être utilisé sur n'importe quel IEnumerable<T> de l'instance.

Existe ne semble pas être une méthode d'extension. Ma conjecture est que le col est de type List<T>. Si donc il Existe, est une méthode d'instance qui fonctionne très similaire à Tout.

En bref, les méthodes sont essentiellement les mêmes. L'une est plus générale que les autres.

  • Tout aussi a une surcharge qui ne prend aucun paramètre et regarde simplement pour n'importe quel élément de l'énumération.
  • Existe n'a pas une telle surcharge.

5voto

flq Points 11937

En outre, cela ne fonctionnera que si la Valeur est de type bool. Normalement, il est utilisé avec des prédicats. Tout prédicat serait généralement utilisé rechercher s'il existe un élément de satisfaire à une condition donnée. Ici, vous êtes en train de faire une carte à partir de votre élément de i à une valeur bool propriété. Il sera à la recherche d'un "je" dont la Valeur de la propriété est vraie. Une fois cela fait, la méthode renvoie true.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X