DataGridView列最大值获取失败求助:值未添加至List问题
问题解决:List.Append()无法添加元素的原因及修正
核心问题
List<int>.Append() 方法不会修改原集合——它会返回一个包含新增元素的新序列,而你没有把这个新序列赋值回原List,导致intValues始终是空集合。
修正方案
把 Append 替换为 List<T>.Add() 方法,这个方法会直接向原List中添加元素:
List<int> intValues = new List<int>(); foreach (DataGridViewRow row in dataGridView2.Rows) { // 检查目标单元格是否非空 if (!(row.Cells[$"{comboBox1.Text + comboBox2.Text}DataGridViewTextBoxColumn"].Value?.ToString() is "")) { var cellValue = row.Cells["donneesAVSS085DataGridViewTextBoxColumn"].Value; if (!(cellValue is DBNull)) { // 用Add替代Append,直接修改原List intValues.Add(Convert.ToInt32(cellValue)); label17.Text = cellValue.ToString(); } } } // 获取最大值(优化写法) int max = intValues.Count > 0 ? intValues.Max() : 0;
额外优化说明
- 手动循环找最大值可以用LINQ的
Max()方法简化,同时要判断List是否为空,避免抛出InvalidOperationException - 优化变量名(把
a改为cellValue)提升代码可读性 label17.Text会被循环的最后一次有效值覆盖,如果需要展示所有值,建议用拼接字符串或其他方式
内容的提问来源于stack exchange,提问作者LiterallyGutsFromBerserk
相关产品推荐
相关产品推荐

