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

如何用Linq将全double类型DataTable转为double[][]并应用Math.Round?

使用LINQ将DataTable转换为带四舍五入的double[][]

当然可以用LINQ简化转换过程,同时还能在转换时对每个值应用Math.Round()方法,一行代码就能完成需求:

// 替换dt为你的DataTable实例,保留2位小数可根据需求调整
double[][] convertedArray = dt.AsEnumerable()
    .Select(row => row.ItemArray
        .Select(val => Math.Round(Convert.ToDouble(val), 2))
        .ToArray())
    .ToArray();

代码说明:

  • dt.AsEnumerable():把DataTable转换为可被LINQ操作的行集合,这是LINQ处理DataTable的前置步骤。
  • Select(row => ...):遍历每一行,将单行数据转换为double[]数组。
  • row.ItemArray:直接获取当前行的所有列值(因为DataTable无列头,不需要按列名取值),返回object[]类型。
  • Math.Round(Convert.ToDouble(val), 2):先将object类型的列值转为double,再对数值进行四舍五入,第二个参数是要保留的小数位数,可根据业务需求修改(比如传入0就是保留整数)。
  • 两次调用.ToArray():先把每行的处理结果转为double[],再把所有行的数组组合成double[][]二维数组。

额外提示:

如果担心实际场景中存在非double类型的异常值,可以添加安全转换逻辑,避免报错:

double[][] safeConvertedArray = dt.AsEnumerable()
    .Select(row => row.ItemArray
        .Select(val => 
        {
            if (double.TryParse(val.ToString(), out double num))
                return Math.Round(num, 2);
            // 处理转换失败的情况,比如返回默认值0
            return 0.0;
        })
        .ToArray())
    .ToArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:55:18