Ho un IEnumerable <doppia> voglio convertire a un < stringa IEnumerable >. Il problema è il seguente codice genera un'eccezione null di argomento sull'istruzione select. Cosa sto sbagliando?LINQ: Convertire IEnumable <double> a IEnumable <string> utilizzando metodo di supporto
Il vero problema si verifica quando provo per scorrere l'tornato IEnumerable <stringa>. Ricevo un'invalidCastException . Vedo nel debuger che le stringhe = { System.Linq.Enumerable.WhereSelectEnumerableIterator < doppio, stringa >}
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);
}
Va bene, ho risolto il mio problema. Questa esecuzione ritardata di Linq rende difficile il debug. In realtà ho una chiamata a monte che causa il problema.
ICollection<float> floats; //pretend it holds valid data
ConvertToString(floats.Cast<double>()) //<---This is naughty
Il codice così com'è, non dovrebbe gettare alcun ArgumentNullException. 'd' non può essere nullo, perché è un tipo di valore; e 'doubles' non può essere nullo, perché lo controlli. Puoi aggiungere un programma breve ma completo che mostri il problema? – dtb