c# – 基于每个元素调试LINQ
发布时间:2020-12-15 08:42:20 所属栏目:百科 来源:网络整理
导读:我喜欢LINQ语句的表达语法和其他方便的功能.但是,我发现有时调试它们非常麻烦.具体来说,当我在集合上运行LINQ语句并且集合中的一个元素导致异常时,如何确定问题输入是什么以及问题来自何处? 想象一下,我有一个包含1000个实数的文本文件: 0.4657812.3142131
我喜欢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的字符串,并且我可以将鼠标悬停在行上以轻松查看问题输入是什么. 当然,我可以使用Resharper将我的LINQ语句转换为for循环,然后调试它们,但是有更好的方法吗? 解决方法
在lambda函数上放置一个条件断点,其条件为s.StartsWith(“5.56”).你只需要将光标放在lambda上并按F9即可.假设你正在使用visual studio.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |