J'ai un IEnumerable < à double > Je veux convertir en une chaîne <IEnumerable>. Le problème est que le code ci-dessous renvoie une exception null d'argument dans l'instruction select. Qu'est-ce que je fais de mal?LINQ: Convertir IEnumable <double> à IEnumable <string> en utilisant la méthode d'aide
Le problème réel se produit lorsque je tente à itérer le retour IEnumerable < chaîne >. Je reçois un InvalidCastException. Je vois dans le debuger que les chaînes = { System.Linq.Enumerable.WhereSelectEnumerableIterator < double, chaîne >}
private IEnumerable<string> ConvertToString(IEnumerable<double> doubles)
{
IEnumerable<string> strings = null;
if (doubles != null)
strings = doubles.Select(d => ConvertToString(d));
return strings;
}
private string ConvertToString(double d)
{
return string.Format("{0:0.00}", d);
}
D'accord, je résolu mon problème. Cette exécution retardée de Linq rend le débogage difficile. J'ai en fait un appel en amont causant le problème.
ICollection<float> floats; //pretend it holds valid data
ConvertToString(floats.Cast<double>()) //<---This is naughty
Le code en l'état ne doit pas jeter de ArgumentNullException. 'd' ne peut pas être nul, parce que c'est un type de valeur; et 'doubles 'ne peut pas être nul, parce que vous vérifiez pour cela. Pouvez-vous ajouter un programme court mais complet qui démontre le problème? – dtb