我喜歡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