わかりやすい構文や便利な機能のためにLINQ文が大好きです。しかし、時々デバッグするのは非常に面倒です。具体的には、コレクションでLINQステートメントを実行し、コレクション内の要素の1つで例外が発生した場合、どのような問題が入力されたのか、どこから問題が発生したのかを把握するにはどうすればよいですか?このため、要素単位でのLINQのデバッグ
var file_contents = File.ReadAllLines("myfile.txt");
var data = file_contents.Select(s => double.Parse(s));
今:
0.46578
12.314213
1.444876
...
私はList<string>
としてこれを読んで、より具体的なデータ構造にロードしています:
することは、私が1000の実数でテキストファイルを持っている想像してみて特定の入力、私は慎重にそれを見て気にしなかったし、それは876行が含まれていることが判明した(行番号が示されている):
875 5.56786450
876 Error: Could not calculate value.
878 0.0316213
何らかの理由で(おそらく、ファイルが誤動作したスクリプトによって生成された)。私のLINQメソッドチェーンは、もちろん例外をスローします。問題は、リストのどの要素が例外を引き起こしたのか、その値はどうだったのでしょうか?
var data = new List<double>();
foreach(var row in file_contents)
{
var d = double.Parse(row);
data.Add(d);
}
すると例外がdouble.Parse
を呼び出して文字列をハイライトだろう、と私は簡単に何を問題の入力を参照してくださいrow
の上にマウスのことができるようになります。代わりに私はforループを使用する場合、明確にする
ありました。
もちろん、Resharperを使用してLINQ文をfor-loopsに変換してからデバッグすることはできますが、より良い方法がありますか?
これは、LINQのどのようなEAP? EFまたはLINQ to SQL? –