46 votes

La séquence ne contient aucune exception d'éléments dans linq sans même utiliser Single

Je n'utilise pas Single dans LINQ ci-dessous, mais j'obtiens toujours une exception « La séquence ne contient aucun élément » :

 allNames = StockCollection.Where((s) => s.Name.IndexOf("A") == 0)
                          .Select((s) => s.Name)
                          .Aggregate((namesInfo, name) => namesInfo += ", " + name);

Cette exception survient lorsqu'il n'y a pas de stock commençant par le nom 'A' .

Il semble qu'une méthode d'extension attend au moins un élément satisfaisant la condition mais ce n'est pas attendu.

Pouvez-vous s'il vous plaît suggérer la meilleure solution pour résoudre ce problème?

Merci d'avance.

15voto

Ferhat Points 31

Utiliser avec des graines vides.

 new string[]{}.Aggregate("", (a,b)=> a+b )

6voto

Dennis Traub Points 24186

L'utilisation d'Aggregate(func) sur une source vide lève une InvalidOperationException.

Voir la documentation : http://msdn.microsoft.com/en-us/library/bb548651.aspx

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