DataTable dt = SQLLayer.Get工作量统计(beginDate, endDate);
            var querySum = from t in dt.AsEnumerable()
                           group t by t.Field<string>("库房")
                               into g
                               select new
                                   {
                                       _库房 = g.Key,
                                       _品次_入库 = g.Sum(t => t.Field<decimal>("品次_入库")),
                                       _品种_入库 = g.Sum(t => t.Field<decimal>("品种_入库")),
                                       _金额_入库 = g.Sum(t => t.Field<decimal>("金额_入库")),
                                       _品次_出库 = g.Sum(t => t.Field<decimal>("品次_出库")),
                                       _品种_出库 = g.Sum(t => t.Field<decimal>("品种_出库")),
                                       _金额_出库 = g.Sum(t => t.Field<decimal>("金额_出库")),
                                       _品种_现存 = g.Sum(t => t.Field<decimal>("品种_现存")),
                                       _金额_现存 = g.Sum(t => t.Field<decimal>("金额_现存"))
                                   };             DataTable newDt = new DataTable();             DataRow newRow = null;
            newDt.Columns.Add("库房", typeof(string));
            newDt.Columns.Add("品次_入库", typeof(decimal));
            newDt.Columns.Add("品种_入库", typeof(decimal));
            newDt.Columns.Add("金额_入库", typeof(decimal));
            newDt.Columns.Add("品次_出库", typeof(decimal));
            newDt.Columns.Add("品种_出库", typeof(decimal));
            newDt.Columns.Add("金额_出库", typeof(decimal));
            newDt.Columns.Add("品种_现存", typeof(decimal));
            newDt.Columns.Add("金额_现存", typeof(decimal));             foreach (var query in querySum)
            {
                newRow = newDt.NewRow();
                newRow["库房"] = query._库房;
                newRow["品次_入库"] = query._品次_入库;
                newRow["品种_入库"] = query._品种_入库;
                newRow["金额_入库"] = query._金额_入库;
                newRow["品次_出库"] = query._品次_出库;
                newRow["品种_出库"] = query._品种_出库;
                newRow["金额_出库"] = query._金额_出库;
                newRow["品种_现存"] = query._品种_现存;
                newRow["金额_现存"] = query._金额_现存;
                newDt.Rows.Add(newRow);             }

 private void btnLinqTest__Click(object sender, EventArgs e)
        {
            DataTable vtblSeqBase = this.DM.bdsSingle._mpDataTable;             //1. GroupBy 统计
var query =
               from q in vtblSeqBase.AsEnumerable()
               group q by q.Field<string>("MachineType") into r
               select new
               {
                   _qMachType = r.Key,
                   _qCount = r.Count()
               };             using (DataTable vtblCount = new DataTable())
            {
                DataRow vNewRow = null;
                vtblCount.Columns.Add("MachType", typeof(string));
                vtblCount.Columns.Add("Count", typeof(int));
                foreach (var vq in query)
                {
                    vNewRow = vtblCount.NewRow();
                    vNewRow["MachType"] = vq._qMachType;
                    vNewRow["Count"] = vq._qCount;
                    vtblCount.Rows.Add(vNewRow);
                }
                //vtblCount.mmViewForRD();
            }             //2. Distinct用法       XXXTestOk 2011-07-18
            var d = (from DataRow vRow in vtblSeqBase.Rows
                     select new { _MachType = vRow["MachineType"] }).Distinct();
            using (DataTable vtblDistinct = new DataTable())
            {
                DataRow vNewRow = null;
                vtblDistinct.Columns.Add("MachType", typeof(string));
                vtblDistinct.Columns.Add("Count", typeof(int));
                foreach (var q in d)
                {
                    vNewRow = vtblDistinct.NewRow();
                    vNewRow["MachType"] = q._MachType;
                    vtblDistinct.Rows.Add(vNewRow);
                }
                //vtblDistinct.mmViewForRD();
            }             //DataTableExtensions.CopyToDataTable             //3.
            List<int> vListNum = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
            IEnumerable<int> vDistNum = vListNum.Distinct();
            foreach (int n in vDistNum)
            {
                //MessageBox.Show("不重复的数值 =" + n.ToString());
            }             //4. Group By 一个字段
            var querySum =
                from q in vtblSeqBase.AsEnumerable()
                group q by q.Field<string>("MachineType") into g
                select new
                {
                    _qMachType = g.Key,
                    _qSamTotal = g.Sum(q => q.Field<decimal>("SamValue"))
                };             using (DataTable vtblSAMTotal  = new DataTable())
            {
                DataRow vNewRow = null;
                vtblSAMTotal.Columns.Add("MachType", typeof(string));
                vtblSAMTotal.Columns.Add("SAMTotal", typeof(decimal));
                foreach (var vq in querySum)
                {
                    vNewRow = vtblSAMTotal.NewRow();
                    vNewRow["MachType"] = vq._qMachType;
                    vNewRow["SAMTotal"] = vq._qSamTotal;
                    vtblSAMTotal.Rows.Add(vNewRow);
                }
                //vtblSAMTotal.mmViewForRD();
            }             //5. Group By 多个字段 GBN = Group By NField
            var queryGBN  =
                from q in vtblSeqBase.AsEnumerable()
                group q by new {机器代码=q.Field<string>("MachineType"), 工序代码=q.Field<string>("SeqCode") }
                into g
                select new
                {
                    _qMachType = g.Key,
                    _qSamTotal = g.Sum(q => q.Field<decimal>("SamValue")),
                    _qSamAvg = g.Average(q => q.Field<decimal>("SamValue"))
                };             using (DataTable vtblSAMTotal = new DataTable())
            {
                DataRow vNewRow = null;
                vtblSAMTotal.Columns.Add("MachType", typeof(string));
                vtblSAMTotal.Columns.Add("SeqCode", typeof(string));
                vtblSAMTotal.Columns.Add("SAMTotal", typeof(decimal));
                vtblSAMTotal.Columns.Add("SAMAvg", typeof(decimal));
                foreach (var vq in queryGBN)
                {
                    vNewRow = vtblSAMTotal.NewRow();
                    vNewRow["MachType"] = vq._qMachType;
                    vNewRow["SeqCode"] = vq._qMachType;
                    vNewRow["SAMTotal"] = vq._qSamTotal;
                    vNewRow["SAMAvg"] = vq._qSamAvg;
                    vtblSAMTotal.Rows.Add(vNewRow);
                }
                vtblSAMTotal.mmViewForRD();
            }
        }

C# Linq To DataTable 分组统计 DEMO的更多相关文章

  1. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  2. linq 将datatable分组求和在转datatable

    DataTable dt = new DataTable(); dt.Columns.Add("CustomerID"); dt.Columns.Add("aa" ...

  3. DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

    DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...

  4. 如何使用linq操作datatable进行分组

    使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作, ...

  5. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  6. (转)C#用Linq实现DataTable的Group by数据统计

    本文转载自:http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序 ...

  7. C# Linq及Lamda表达式实战应用之 GroupBy 分组统计

    在项目中做统计图表的时候,需要对查询出来的列表数据进行分组统计,首先想到的是避免频繁去操作数据库可以使用 Linq eg: //例如对列表中的Cu元素进行按年GroupBy分组统计 //包含年份,平均 ...

  8. Dev用于界面按选中列进行分组统计数据源(实用技巧)

    如果有用U8的可以明白这个功能就是模仿他的统计功能.我不过是把他造成通用的与适应于DEV的. (效率为6000条数据分组统计时间为3秒左右分组列过多5秒.1000条以下0.几秒,500条下0.00几秒 ...

  9. XtraGrid使用心得(折叠式主细档、分组统计)

    XtraGrid的关键类就是:GridControl和GridView.GridControl本身不显示数据,数据都是显示在GridView/CardView/XXXXView中.GridContro ...

随机推荐

  1. 12306火车票订票网站的一个Bug

    国庆节后回上海,大家都知道的火车票灰常火爆,卧铺票一票难求.登录http://www.12306.cn 铁路公司售票网站发现北京—>上海的卧铺已经售完,考虑到北京—>蚌埠这段还是在白天及晚 ...

  2. Windows平台Atom编辑器的常用快捷键小抄Cheat Sheet

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows平台Atom编辑器的常用快捷键小抄Cheat Sheet.

  3. 软中断&amp;tasklet&amp;工作队列

    软中断 软中断的分配时静态的(即在编译时定义),而tasklet的分配和初始化能够在执行时进行. 软中断(即便是同一种类型的软中断)能够并发地运行在多个CPU上. 因此,软中断是可重入函数并且必须明白 ...

  4. .pfx格式和.Cer格式的区别

    ize:12px">作为文件形式存在的证书一般有这几种格式: 1.带有私钥的证书 由Public Key Cryptography Standards #12,PKCS#12标准定义, ...

  5. 原创 Reflector 8.1 反激活

    今天下载了Reflector8.1,注册时不小心给注册成标准版了.郁闷,然后想反注册,结果人家的注册服务器不认你的注册码.怎么办? google.... 然后找到一篇 Deactivating you ...

  6. DiscreteSeekBar使用简介,一个带气泡的SeekBar

    android自带的SeekBar样式比较古板,如果我们想让自己的SeekBar炫起来,那么可以考虑使用DiscreteSeekBar.DiscreteSeekBar是GitHub上的一个开源控件,地 ...

  7. oracle学习----去除表中的重复数据

    重复的数据可能有这样两种情况,第一种:表中只有某些字段一样,第二种:两行记录完全一样.第一.对于部分字段重复数据的删除        先来谈谈如何查询重复的数据吧.        下面语句可以查询出那 ...

  8. oracle学习----trace文件

    1.查看v$diag_info视图,能查看跟踪文件的位置,具体的名称等信息. name列中,Diag Trace是11g跟踪文件所在位置 Default Trace File是当前会话的跟踪文件名 2 ...

  9. 移动端rem布局的适配mixin【转藏】

    /*================================================================ 以下为基于ip5 宽度320做的适配,标准html{font-si ...

  10. wap上传图片跨域发送post请求

    wap和接口交互是跨域请求,一般只能通过Jsonp来进行数据的吞吐,然而jsonp只是GET请求,不能发送post请求,所以会对项目需求有所限制. 需求:wap跨域通过接口上传图片. 条件:接口是C# ...