如何修改C#代码以提取CSV文件第三列最大值对应整行数据并显示
解决方案
修正后代码
private void BtnAuswerten_Click(object sender, RoutedEventArgs e) { using (var reader = new StreamReader(@"H:/Projekte/MaxTemp2/MaxTemp/MaxTemp/temps.csv")) { // 初始化变量:存储当前最大温度、温度最高的整行内容 double maxTemp = double.MinValue; string maxTempLine = string.Empty; while (!reader.EndOfStream) { var line = reader.ReadLine(); if (string.IsNullOrWhiteSpace(line)) continue; // 跳过空行 var values = line.Split(','); // 校验列数是否符合要求,避免索引越界 if (values.Length < 3) continue; // 尝试将第三列转为数值类型,转换失败则跳过当前行 if (double.TryParse(values[2], out double currentTemp)) { // 当前行温度大于已记录的最大值时更新 if (currentTemp > maxTemp) { maxTemp = currentTemp; maxTempLine = line; } } } // 输出温度最高的整行内容 lblAusgabe.Content = maxTempLine; } }
逻辑说明
- 不需要存储所有行的全量数据,仅在遍历过程中跟踪当前最高温度对应的行,内存占用更低
- 增加了空行、列数不足、数值格式错误的兼容逻辑,避免程序运行报错
- 针对你提供的CSV样本数据,最终会输出最高值
59.5对应的整行内容:S1,2020-07-01 16:31:38,59.5
内容的提问来源于stack exchange,提问作者user17559990
相关产品推荐
相关产品推荐

