tengo un IEnumerable <doble> Quiero convertir a un IEnumerable <cadena>. El problema es que el código siguiente arroja una excepción de argumento nulo en la instrucción select. ¿Qué estoy haciendo mal?LINQ: Convertir IEnumable <double> a IEnumable <string> usando método de ayuda
El problema real ocurre cuando intento para iterar a través de la regresado IEnumerable <cadena>. Obtengo una InvalidCastException. Veo en el debuger que las cadenas = { System.Linq.Enumerable.WhereSelectEnumerableIterator < doble, de cadena >}
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);
}
bien, he resuelto mi problema. Esta ejecución retrasada de Linq dificulta la depuración. De hecho, tengo una llamada corriente arriba que causa el problema.
ICollection<float> floats; //pretend it holds valid data
ConvertToString(floats.Cast<double>()) //<---This is naughty
El código como está no deben arrojar ningún ArgumentNullException. 'd' no puede ser nulo, porque es un tipo de valor; y 'dobles 'no puede ser nulo, porque lo compruebas. ¿Puedes agregar un programa breve pero completo que demuestre el problema? – dtb