Ich liebe LINQ-Anweisungen für die expressive Syntax und andere praktische Funktionen. Allerdings finde ich es sehr mühsam, sie manchmal zu debuggen. Insbesondere, wenn ich eine LINQ-Anweisung für eine Auflistung ausführen und eines der Elemente in der Auflistung eine Ausnahme verursacht, wie kann ich herausfinden, was die Problemeingabe war und wo das Problem herkam?Debuggen von LINQ pro Element
Stellen Sie sich vor ich eine Textdatei mit 1000 reellen Zahlen haben:
0.46578
12.314213
1.444876
...
ich dies als List<string>
lese und es in eine bestimmte Datenstruktur laden:
var file_contents = File.ReadAllLines("myfile.txt");
var data = file_contents.Select(s => double.Parse(s));
Nun, für diese bestimmter Eingang, ich habe nicht die Mühe sorgfältig um es zu betrachten, und es stellt sich heraus, die 876. Zeile enthält (Zeilennummern angezeigt):
875 5.56786450
876 Error: Could not calculate value.
878 0.0316213
Aus welchem Grund auch immer (vielleicht wurde die Datei von einem Skript erzeugt, das fehlfunktionierte). Meine LINQ-Methodenkette wird natürlich eine Ausnahme auslösen. Das Problem ist, wie kann ich herausfinden, welches Element der Liste die Ausnahme verursacht hat und welchen Wert es hatte?
Um zu klären, ob stattdessen benutzte ich eine for-Schleife:
var data = new List<double>();
foreach(var row in file_contents)
{
var d = double.Parse(row);
data.Add(d);
}
Dann würde markieren die Ausnahme die Zeichenfolge, die double.Parse
nennt, und ich möchte die Maus über row
der Lage sein, leicht zu sehen, was das Problem Eingangs war.
Ich kann natürlich Resharper verwenden, um meine LINQ-Anweisungen in for-Schleifen zu konvertieren und sie dann zu debuggen, aber gibt es einen besseren Weg?
Was für eine Art von LINQ gestartet ist das? EF oder LINQ zu SQL? –