将n行3列的数据dataTable装换成m行7列的dataTable
//思路:新建dataTable,定义需要的列, 先将数据源进行分组,第一重遍历获取所有组,第二重遍历获取某一个组的具体数据
public void DataBind()
{
DateTime time;
if (string.IsNullOrEmpty(txtDate.Value.Trim()) || !DateTime.TryParse(txtDate.Value.Trim() + "-01", out time))
{
//如果时间为空,则查询当月
this.txtDate.Value = DateTime.Now.ToString("yyyy-MM");
}
//获取各部门对于各物流公司的费用统计
DataTable AllData = CurrentBll.GetLogisticsCompanyExpensesDt(this.txtDate.Value.Trim()); var data = from item in AllData.AsEnumerable()
group item by item["DeptCode"].DBValueToString();
//各部门数据
DataTable table = new DataTable();
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "DeptCode" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "shunfeng" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "zaiji" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "quanyi" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "cces" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "quanfeng" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "ems" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "shengtong" });
table.Columns.Add(new DataColumn() { DataType = typeof(string), ColumnName = "sum" }); foreach (IGrouping<string, DataRow> group in data)
{
DataRow row = table.NewRow();
row["DeptCode"] = group.Key;
foreach (var temp in group)
{
string cost = temp["Cost"].DBValueToString();
switch ( temp["DeliveryType"].DBValueToInt32() )
{
case CourierDeliveryType.SF: row["shunfeng"] = cost;
break;
case CourierDeliveryType.ZJS: row["zaiji"] = cost;
break;
case CourierDeliveryType.QY: row["quanyi"] = cost;
break;
case CourierDeliveryType.CCES: row["cces"] = cost;
break;
case CourierDeliveryType.QF: row["quanfeng"] = cost;
break;
case CourierDeliveryType.EMS: row["ems"] = cost;
break;
case CourierDeliveryType.ST: row["shengtong"] = cost;
break;
};
}
//统计该行的所有数据
row["sum"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
table.Rows.Add(row);
} //合计信息
DataTable CountTable = table.Clone();
var count = from item in AllData.AsEnumerable()
group item by item["DeliveryType"].DBValueToInt32();
DataRow countRow = CountTable.NewRow();
//统计统计
countRow["sum"] = count.Sum(p => p.Sum(l => l["Cost"].DBValueToDecimal())).ToString(); foreach (IGrouping<int, DataRow> group in count)
{
switch (group.Key.DBValueToInt32())
{
case CourierDeliveryType.SF: countRow["shunfeng"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
case CourierDeliveryType.ZJS: countRow["zaiji"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
case CourierDeliveryType.QY: countRow["quanyi"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
case CourierDeliveryType.CCES: countRow["cces"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
case CourierDeliveryType.QF: countRow["quanfeng"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
case CourierDeliveryType.EMS: countRow["ems"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
case CourierDeliveryType.ST: countRow["shengtong"] = group.Sum(p => p["Cost"].DBValueToDecimal()).ToString();
break;
};
}
CountTable.Rows.Add(countRow);
this.rptLogisticsCompanyExpenses.DataSource = table;
this.rptLogisticsCompanyExpenses.DataBind();
this.rptSum.DataSource = CountTable;
this.rptSum.DataBind();
}
将n行3列的数据dataTable装换成m行7列的dataTable的更多相关文章
- sql 把一列的数据按逗号分隔转换成多行
ALTER proc [dbo].[ModifyWkCashAccountNo]asbeginset xact_abort onbegin transactiondeclare @errors int ...
- Web Api 将DataTable装换成Excel,并通过文件流将其下载
不废话,直接上代码 前端代码 <input type="button" class="layui-btn" value="Test-GetFil ...
- datatable的部分问题处理(动态定义列头,给某行添加事件,初始显示空数据)
一.动态定义列头 在ajax中,用datatable再去重新配置列头,当然传回的数据中,要有对应放列头的键值对 我自定义了Mock数据,用于前端自己交互. 其中,rowdata用于存放传回的数据,co ...
- pandas数据处理基础——筛选指定行或者指定列的数据
pandas主要的两个数据结构是:series(相当于一行或一列数据机构)和DataFrame(相当于多行多列的一个表格数据机构). 本文为了方便理解会与excel或者sql操作行或列来进行联想类比 ...
- miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题
最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid ...
- pandas 筛选指定行或者列的数据
pandas主要的两个数据结构是:series(相当于一行或一列数据结构和DataFrame(相当于多行多列的一个表格数据机构). 原文:https://www.cnblogs.com/gangand ...
- C# 关于操作datatable的列名和删除某一列的数据
1.获取一个数据集表 DataTable dt = selectDEGS(type, words, KUser); 2.删除某一列 dt.Columns.Remove("TaskID&quo ...
- ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- View中选择的数据行中的部分数据传入到Controller中
将View中选择的数据行中的部分数据传入到Controller中 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NE ...
随机推荐
- Octopus系列之开发中灵光点收集,先放到这里,后面会整理的
项目中引用的组件 1.System.Data.SQLite.dll 自行编译 SQLite-1.0.66.0-source 3.5的框架:F:\Code\开源项目\SQLite\1.0.66.0_x8 ...
- FZU 2027 单词问题 map标记字符串典型问题
题目链接:单词问题 找一个字符串里的所有单词,重复的只输出一次.关于map函数key值是字符串的问题一直比较含糊... 挣扎了一番,大概是,map的key值是char型数组的时候,标记的是地址,于是有 ...
- MongoDb系列
这个系列主要总结学习MongoDb过程中的一些经验. 简单介绍及环境搭建 常用命令 C#驱动及应用 管理工具MongoVUE使用
- JS引用类型之——数组
前言 数组作为JS中非常常用的引用类型,其功能是非常强大滴,今天小猪就彻底的看了下它.为了防止猪脑子不够用所以记录在案呐 1.数组的创建 var arrayObj = new Array(); //创 ...
- bind,unbing,on,live,delegate绑定和解绑事件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/T ...
- 统计sql语句执行效率
--统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...
- 北邮新生排位赛1解题报告d-e
话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的 407. BLOCKS 时间限制 1000 ms 内存限制 65536 KB 题目描述 给定一个N∗M的矩阵,求问里 ...
- ASP.NET MVC学习之路由篇(1)
1.基本路由 RouteConfig.cs: 1 public class RouteConfig 2 { 3 public static void RegisterRoutes(RouteColle ...
- json数组,随便测试
Pid := '1001411225514227,926792194654225'; json := SA([]); json.AsArray.Add(SO(pid)); ShowMessage( j ...
- [Windows驱动]驱动包(Driver Packages)
在windows下安装一个驱动,我们你需要把所有需要的软件打包-称为驱动包.驱动包里包括系统提供的给所有设备类使用的一般安装工具,还包括了设备商提供的设备特定的组件.下面我们就来看看驱动包里具体需要哪 ...