Ich habe eine IEnumerable <Doppel> ich > in ein IEnumerable < Zeichenfolge konvertieren möchten. Das Problem ist der folgende Code löst eine Argument-Null-Ausnahme für die Select-Anweisung aus. Was mache ich falsch?Linq: Konvertieren IEnumable <double> zu IEnumable <string> mit Hilfsmethode
Das eigentliche Problem tritt auf, wenn ich versuchen > durch die zurück IEnumerable < String iterieren. Ich bekomme eine InvalidCastException. Ich sehe in der debuger, die Strings = {System.Linq.Enumerable.WhereSelectEnumerableIterator < Doppel, string >}
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);
}
Okay, ich mein Problem gelöst. Diese verzögerte Ausführung von Linq macht das Debugging schwierig. Ich habe tatsächlich einen Anruf stromaufwärts, der das Problem verursacht.
ICollection<float> floats; //pretend it holds valid data
ConvertToString(floats.Cast<double>()) //<---This is naughty
Der Code als Service-Leistung sollte kein Argument werfen. 'd' kann nicht null sein, weil es ein Werttyp ist; und 'doubles' kann nicht null sein, weil Sie nach dem suchen. Können Sie ein kurzes, aber vollständiges Programm hinzufügen, das das Problem aufzeigt? – dtb