Quelle est la "meilleure" façon (en tenant compte à la fois de la vitesse et de la lisibilité) de déterminer si une liste est vide ? Même si la liste est de type IEnumerable<T>
et ne possède pas de propriété Count.
En ce moment, j'hésite entre ça :
if (myList.Count() == 0) { ... }
et ceci :
if (!myList.Any()) { ... }
Je pense que la seconde option est plus rapide, puisqu'elle renverra un résultat dès qu'elle verra le premier élément, alors que la seconde option (pour un IEnumerable) devra visiter chaque élément pour renvoyer le compte.
Cela dit, la deuxième option vous semble-t-elle aussi lisible ? Laquelle préférez-vous ? Ou pouvez-vous imaginer une meilleure façon de tester une liste vide ?
Modifier La réponse de @lassevk semble être la plus logique, couplée à un peu de vérification à l'exécution pour utiliser un compte en cache si possible, comme ceci :
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;
return !list.Any();
}