使用微软.net的孩子们应该都知道linq吧,要知道linq可是其他高级语言没有的技术,比如php,java等等,但是起初我对linq的认识只是停留在对 list<> 的泛型集合进行操作,要知道操作数据库的,我们比较容易得到的是 datatable,而得到 list<>集合的性能会降低,很多情况下,我们需要对我们的datatable进行操作,很多想到了的对datatable进行逐行或者 逐列进行遍历,但是如果要对datatable进行分组 那就没有办法了,在找了很多资料之后,我发现很多 提供的linq的操作 datatable 是错的,所以我希望把我研究后的datatable的使用linq的方法分享下!!!!!
       在我研究了近两天后,终于找到了 不会报错的linq操作的  分组了!!!

//接下来我们得到一个sql语句,jobdate工作时间(datetime数据类型)UserName(string数据类型)
       //我们通过sql语句得到我们 查询表UserLogin所有的记录了
        DataTable dt = GetData<DataBase.MyoA>.getTableBysql("select *   from UserLogin"); 
      //接下来我们要对datatable进行分组,我们可以这样理解  
   //要知道datatable 由row组成,(一个表由多个行组成)
   //当让我们要知道datatable需要使用AsEnumerable()的方法才能遍历
        var grouped2 = from row in dt.AsEnumerable()
                           orderby row["jobdate"] ascending    //  我们获得其中一列的方法类似
                            //下面我们要进行分组,因为分组之后我们就已经不是datatable  ,而是一个我们
                           //所需要的一组集合,分组后我们变成了valueGroup
                           group row by new { UserName = row["UserName"] } into valueGroup
                           //下面我们可以对分组后的数据进行取最大值,获得进行统计
                           select new { username = valueGroup.Key.UserName, Value = valueGroup.Key,
       jobdate = valueGroup.Max(jobdate => jobdate["jobdate"]), count = valueGroup.Count() };

这个时候我们要需要对转化成datatable怎么办呢?
  
   //  首先我们要建立与他们对应的 datatable,然后我们来进行遍历
     DataTable dt2=new DataTable();
            dt2.Columns.Add("username",typeof(System.String));
            dt2.Columns.Add("jobdate",typeof(System.DateTime));
            foreach (var ig in grouped2)
            {
                DataRow dr = dt2.NewRow();
                dr["username"] = ig.username;   //这个是对得到了集合进行取值的方法
                dr["jobdate"] = ig.jobdate;
                dt2.Rows.Add(dr);
            }

网上我看到了很多对 datatable进行分组操作的例子,但是绝大多数的操作都是错的,就是会报错,只有这个才是会不会报错了。

本人QQ地址: http://user.qzone.qq.com/379069296/infocenter?ptsig=kRNgg5eaVPb57J3v5FxtpOiagwiYQg9vkSG871RxjCE_

如何使用linq操作datatable进行分组的更多相关文章

  1. Linq 操作DataTable

    class ClientStruct { public string ID = "ID"; public string Name = "Name"; publi ...

  2. Linq实现DataTable的分组统计

    DataTable dt = GetTestData(10); //获取10条测试数据 var queryByService = from r in dt.AsEnumerable() group r ...

  3. C# 中 Linq 操作 DataTable

    方法一:更简洁 Console.WriteLine(dt.Rows.OfType<DataRow>().First(x => x.Field<string>(" ...

  4. Linq操作DataTable

    IEnumerable<DataRow> q = from dr in dt.AsEnumerable()                          where dr.Field& ...

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

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

  6. 关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧

    项目中用到了对两个集合的帅选等操作,简单总结下 1.Linq操作多个Datable 可以通过AsEnumerable()方法对DataTable进行Linq操作 //获取数据表所有数据 DataTab ...

  7. Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解

    返回<8天掌握EF的Code First开发>总目录 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to ...

  8. 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...

  9. 【转】Linq实现DataTable行列转换

    出处:http://www.cnblogs.com/li-peng/ 转换前的table: 转换后的table: 代码里有详细的说明, 还有一些参数我都截图了下面有 using System;usin ...

随机推荐

  1. 事件冒泡 ,停止事件冒泡 e.stopPropagation()

    <1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>防止起泡 ...

  2. 合理设置MTU,提升下载速度

    可能很少有雷友注意过“本机.网络”的“MTU”值对自己网络性能产生的影响.对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般. MTU是什么? “MTU=最大传输单元 单位:字节” ...

  3. 安装numpy、nltk问题汇总

    系统环境是win7(64bit)+python3.4(64bit)+numpy1.82+vs2012 1.假设用sourceforge上编译好的32bit的exe安装,会提示'python versi ...

  4. 无显示仍然发挥树莓派——VNCserver设定

    谁说没有显示器就不能玩树莓派的图形界面了.不要忘了VNCserver哦! VNC(Virtual Network Computing)属于一种网络显示系统,也就是说它能将完整的窗体界面通过网络传输到还 ...

  5. /dev/shm(转)

    引用网上:/dev/shm首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这 ...

  6. android 反编译,反,注射LOG

    反编译smali注射显示LOG该代码.以后使用: .class public Lnet/iaround/connector/DebugClass; .super Ljava/lang/Object; ...

  7. 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length

    // 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba ...

  8. head first c&lt;11&gt;在根据网络编程

    博文可以在一个大的网络通信实现,但是,一个人只能起到,我们能够给每个clientfork()子进程,实现诸多的服务. 方法: client连到server以后,server启动一个新创建的套接字对话. ...

  9. Nginx + unicorn 运行多个Rails应用程序

    PS:第一次写的很详细,可惜发布失败,然后全没了,这是第二次,表示只贴代码,剩下的自己领悟好了,这就是所谓的一鼓作气再而衰吧,希望没有第三次. 版本: ruby 2.1.0 rails 4.0.2 n ...

  10. Preemption Context Switches 和 Synchronization Context Switches

    Preemption Context Switches测量操作系统任务调度线程处理器上执行的次数,以及切换到较高-priority螺纹,数. Synchronization context switc ...