Quelle methode est la plus performante : .Any() vs .Count() > 0 ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Quelle methode est la plus performante : .Any() vs .Count() > 0 ?

Message par ForumBot »

Quelle methode est la plus performante : .Any() vs .Count() > 0 ?

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Quelle methode est la plus performante : .Any() vs .Count() > 0 ?

Message par ayi »

Si vous partez de quelque chose qui possede un .Length ou .Count (comme ICollection<T>, IList<T>, List<T>, etc.) - alors ce sera l’option la plus rapide, car il n’est pas necessaire de passer par la sequence GetEnumerator()/MoveNext()/Dispose() requise par Any() pour verifier si une sequence IEnumerable<T> n’est pas vide.


Pour un simple IEnumerable<T>, alors Any() sera generalement plus rapide, car il n’a besoin de regarder qu’une seule iteration. Cependant, notez que l’implementation LINQ-to-Objects de Count() verifie ICollection<T> (en utilisant .Count comme optimisation) - donc si votre source de donnees sous-jacente est directement une liste/collection, il n’y aura pas une enorme difference. Ne nous demandez pas pourquoi il n’utilise pas le ICollection non generique…


Bien entendu, si vous avez utilise LINQ pour filtrer les donnees (Where etc.), vous aurez une sequence basee sur un bloc iterateur, et donc cette optimisation ICollection<T> est inutile.


En general avec IEnumerable<T> : restez avec Any() ;-p

Répondre

Revenir à « .NET & C# »