我喜欢LINQ语句以表达语法和其他方便的功能。不过,我觉得有时候调试起来很麻烦。具体来说,当我在集合上运行LINQ语句并且集合中的某个元素导致异常时,如何才能找出问题的输入以及问题的来源?以每个元素为基础调试LINQ
想象我有1000张实数的文本文件:
0.46578
12.314213
1.444876
...
我读这是一个List<string>
并将其加载到一个更具体的数据结构:现在
var file_contents = File.ReadAllLines("myfile.txt");
var data = file_contents.Select(s => double.Parse(s));
,此特别的输入,我没有仔细看看它,结果显示第876行包含(行号显示):
875 5.56786450
876 Error: Could not calculate value.
878 0.0316213
无论出于何种原因(可能文件是由发生故障的脚本生成的)。我的LINQ方法链当然会抛出异常。问题是,我如何确定列表中的哪个元素导致异常,以及它的价值是什么?
为了澄清,如果不是我用一个for循环:
var data = new List<double>();
foreach(var row in file_contents)
{
var d = double.Parse(row);
data.Add(d);
}
那么例外将突出这就要求double.Parse
的字符串,我将能够鼠标移到row
很容易地看到哪些问题输入是。
我当然可以使用Resharper将我的LINQ语句转换为for-loops,然后调试它们,但有没有更好的方法?
什么样的LINQ的这是什么? EF或LINQ to SQL? – 2013-05-01 19:47:10