Langage C# – Requêtes LINQ sur des collections vides

Dans le développement de vos logiciels, vous pouvez être amenés à écrire le bloc de code dont le prototype l’un des blocs de code suivants :

double dMoyNombrePairs = (from i in oListeNombres
                          where i % 2 == 0
                          select i).Average();

ou

double dMoyNombrePairs = oListeNombres.Where(i => i % 2 == 0).Average();

Lors de leur exécution, lorsque la liste oListeNombres est vide, une exception de type InvalidOperationException est levée avec le message « La séquence ne contient aucun élément ». Pour que dMoyNombrePairs contiennent la valeur 0 dans ce cas, alors il suffit d’utiliser la méthode DefaultIfEmpty :

double dMoyNombrePairs = (from i in oListeNombres
                          where i % 2 == 0
                          select i).DefaultIfEmpty().Average();

ou

double dMoyNombrePairs = oListeNombres.Where(i => i % 2 == 0)
                                      .DefaultIfEmpty()
                                      .Average();

L’utilisation de cette méthode permet d’obtenir les éléments de la collection ou la valeur par défaut du type de la collection (0 pour le type int) si la collection est vide.

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j’alterne les missions de formation et d’ingénierie avec cette plateforme. J’écris ce blog pour transmettre mes connaissances à tout développeur, qu’il soit débutant ou expérimenté.