You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从透视数据表或DataTable所有列中获取最大值

解决DataTable透视表取所有数值最大值的方案

方案1:直接遍历数据源DataTable(推荐,避免UI控件依赖)

跳过GridView,直接操作生成透视表的DataTable,逻辑更直观且避免控件绑定带来的额外问题:

int maxValue = 0;
// 遍历DataTable的每一行
foreach (DataRow row in yourDataTable.Rows)
{
    // 遍历当前行的所有列
    foreach (DataColumn col in yourDataTable.Columns)
    {
        // 跳过非数值列(比如存储星期名称的列,根据你的表结构调整判断条件)
        if (col.ColumnName.Equals("星期", StringComparison.OrdinalIgnoreCase))
            continue;
        
        // 安全转换为整数,处理DBNull或空值情况
        if (int.TryParse(row[col].ToString(), out int currentValue))
        {
            if (currentValue > maxValue)
                maxValue = currentValue;
        }
    }
}
// maxValue即为所有时段事件数的最大值

方案2:修复嵌套List的取值逻辑

如果坚持用GridView遍历生成嵌套List,只需修正最大值的获取方式(不能直接将嵌套列表转为整数,需扁平化遍历):

List<List<int>> dataList = new List<List<int>>();

// 先完成GridView到嵌套List的转换(修正转换逻辑,处理空值)
foreach (GridViewRow row in GridView1.Rows)
{
    List<int> rowList = new List<int>();
    // 从第2列开始遍历(跳过第1列的星期名称)
    for (int i = 1; i < row.Cells.Count; i++)
    {
        if (int.TryParse(row.Cells[i].Text.Trim(), out int val))
            rowList.Add(val);
    }
    dataList.Add(rowList);
}

// 正确获取嵌套List的最大值
// 方式1:逐个遍历子列表找最大值
int maxValue = 0;
foreach (var subList in dataList)
{
    int subMax = subList.Max();
    if (subMax > maxValue)
        maxValue = subMax;
}

// 方式2:用LINQ扁平化列表后取最大值(需引用System.Linq)
// int maxValue = dataList.SelectMany(sublist => sublist).Max();

方案3:用LINQ直接查询DataTable(简洁写法)

借助LINQ和DataTable扩展方法,一行代码搞定:

// 需引用System.Linq和System.Data.DataSetExtensions
int maxValue = yourDataTable.AsEnumerable()
    .SelectMany(row => yourDataTable.Columns
        .Cast<DataColumn>()
        .Where(col => !col.ColumnName.Equals("星期", StringComparison.OrdinalIgnoreCase))
        .Select(col => row.Field<int?>(col)) // 用可空整数处理DBNull
        .Where(val => val.HasValue)
        .Select(val => val.Value))
    .Max();

注意事项

  • 必须处理DBNull或空字符串的情况,否则转换整数时会抛出异常
  • 如果透视表的列命名不同,需调整排除非数值列的判断逻辑
  • 优先操作DataTable数据源,而非GridView控件,避免UI状态影响数据准确性

内容的提问来源于stack exchange,提问作者epaezr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:05:17