gpt4 book ai didi

c# - 基于每个元素调试 LINQ

转载 作者:太空狗 更新时间:2023-10-29 21:28:22 26 4
gpt4 key购买 nike

我喜欢 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 循环,然后对其进行调试,但是有更好的方法吗?

最佳答案

在lambda函数上打条件断点,条件为s.StartsWith("5.56")。您只需要将光标放在 lambda 上并按 F9。假设您使用的是 visual studio。

关于c# - 基于每个元素调试 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com