DataTable Sum累加合计计算(DataRow 合并)

2024-02-01 04:32

本文主要是介绍DataTable Sum累加合计计算(DataRow 合并),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//第一步,取得每行匹配的 行记录标题
            //可以是一个,也可以是组合,比如 车型+排量
            //**重要!必须定义
            string rowTitle = "车型,排量";

            string[] rowTitles = rowTitle.Split(',');
 
            //第二步,取得 行记录值 **重要!必须定义
            List<string> rowKeys = new List<string>();
            rowKeys.Add("飞度,1.4");
            rowKeys.Add("飞度,1.5");
            rowKeys.Add("雅阁,1.8");
 
            //检查异常,并生成行记录SQL
            List<string> rowSQL=new List<string>();

            if (rowTitles.Length != rowKeys[0].Split(',').Length)
            {
                throw new Exception("行记录不匹配");
            }
            else
            {
                for (int i = 0; i < rowKeys.Count; i++)
                {
                    string sql="";
                    for (int j = 0; j < rowTitles.Length; j++)
                    {
                        if (j>0)
                        {
                             sql+=" and " +rowTitles[j]+"='"+ rowKeys[i].Split(',')[j]+"'";
                        }
                        else
                        {
                             sql+= rowTitles[j]+"='"+ rowKeys[i].Split(',')[j]+"'";
                        }
                    }
                    rowSQL.Add(sql);
                }
            }




            //第三步,取得数据源DataTable

            List<DataColumn> dtcl=new List<DataColumn>();

            dtcl.Add(new DataColumn("车型"));
            dtcl.Add(new DataColumn("排量"));
            dtcl.Add(new DataColumn("销量"));
            dtcl.Add(new DataColumn("产量"));

            DataTable dt = new DataTable();

            for (int i = 0; i < dtcl.Count; i++)
            {
                dt.Columns.Add(dtcl[i]);
            }
 
 
            DataRow dr = dt.NewRow();
            dr["车型"] = "飞度";
            dr["排量"] = "1.4";
            dr["销量"] = "6";
            dr["产量"] = "5";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["车型"] = "飞度";
            dr["排量"] = "1.5";
            dr["销量"] = "23";
            dr["产量"] = "5";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["车型"] = "雅阁";
            dr["排量"] = "1.8";
            dr["销量"] = "10";
            dr["产量"] = "9";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["车型"] = "飞度";
            dr["排量"] = "1.5";
            dr["销量"] = "10";
            dr["产量"] = "15";
            dt.Rows.Add(dr);

            Dictionary<string, DataRow[]> rowValues=new  Dictionary<string, DataRow[]>();
            

            for (int i = 0; i < rowKeys.Count; i++)
            {
                rowValues.Add(rowKeys[i], dt.Select(rowSQL[i]));
            }

            //最后一步, 生成最终的合并DataTable
            DataTable dtEx = dt.Clone();

            //计算列
            List<string> calColumns = new List<string>();
            List<decimal> calColumnSums = new List<decimal>();

            calColumns.Add("销量");
            calColumns.Add("产量");
            calColumnSums.Add(0);
            calColumnSums.Add(0);

            for (int i = 0; i < rowValues.Count; i++)
            {
                DataRow drEx = SumRow(rowValues[rowKeys[i]], calColumns, calColumnSums);
 
                dtEx.ImportRow(drEx);
                for (int j = 0; j < calColumnSums.Count; j++)
                {
                    calColumnSums[j] = 0;
                }
            }

这篇关于DataTable Sum累加合计计算(DataRow 合并)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666087

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4