Quelle methode est la plus performante : .Any() vs .Count() > 0 ?
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