Sup*_*est 6 c# linq debugging visual-studio-2012
我喜欢LINQ语句的表达语法和其他方便的功能.但是,我发现有时调试它们非常麻烦.具体来说,当我在集合上运行LINQ语句并且集合中的一个元素导致异常时,如何确定问题输入是什么以及问题来自何处?
想象一下,我有一个包含1000个实数的文本文件:
0.46578
12.314213
1.444876
...
Run Code Online (Sandbox Code Playgroud)
我正在读这个并将其List<string>加载到更具体的数据结构中:
var file_contents = File.ReadAllLines("myfile.txt");
var data = file_contents.Select(s => double.Parse(s));
Run Code Online (Sandbox Code Playgroud)
现在,对于这个特殊的输入,我没有仔细查看它,结果显示第876行包含(行号显示):
875 5.56786450
876 Error: Could not calculate value.
878 0.0316213
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因(可能是由发生故障的脚本生成的文件).我的LINQ方法链当然会引发异常.问题是,如何确定列表中的哪个元素导致异常,以及它的值是什么?
为了澄清,如果我使用了for循环:
var data = new List<double>();
foreach(var row in file_contents)
{
var d = double.Parse(row);
data.Add(d);
}
Run Code Online (Sandbox Code Playgroud)
然后异常将突出显示调用的字符串double.Parse,我将能够鼠标滑过row以轻松查看输入的问题.
当然,我可以使用Resharper将我的LINQ语句转换为for循环,然后调试它们,但是有更好的方法吗?