使用微软.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. 【.NET进程通信】初探.NET中进程间通信的简单的实现

    转载请注明出处:http://blog.csdn.net/xiaoy_h/article/details/26090277 废话不多说,IPC就是进程间通信. 进程间通信能够採用的方法非常多,比方创建 ...

  2. 自己动手写一个编译器Tiny语言解析器实现

    然后,上一篇文章简介Tiny词法分析,实现语言.本文将介绍Tiny的语法分析器的实现. 1 Tiny语言的语法 下图是Tiny在BNF中的文法. 文法的定义能够看出.INNY语言有以下特点: 1 程序 ...

  3. mysql声明摘要

    前一段时间,和学生参加该项目的最终完成,主要的项目是做一个报告,它涉及到很多sql声明,因此,采取下一个汇总. 一.基金会 1.数据库相关的命令 a>.创建数据库 CREATE DATABASE ...

  4. Socket方法LAN多线程文件传输

    1.思维:为了实现各种文件的大小可以被发送和接收的,它可以被设置为发送和接收缓冲器环.并记录文件的位置读取,假设读入缓冲区的字节的特定数目大于缓冲区的大小较小.然后该文件被发送,退出发送周期,关闭连接 ...

  5. 基于android 社会的app短信分享 发送回调事件的实现

    摘要 前一段时间.由于项目的需要,采用ShareSDK该共享功能.其中包含 短信股吧.和呼叫系统,以分享要与成功处理服务器交互的消息后,(我不在乎在这里,收到.仅仅关心发出去了).可是ShareSDk ...

  6. HDU 5095 Linearization of the kernel functions in SVM(模拟)

    主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=5095 Problem Description SVM(Support Vector Machine) ...

  7. ubuntu,从一个新用户,要转到新用户的命令行操作

    shibo-ubuntu@ubuntu:~$ sudo useradd karen [sudo] password for shibo-ubuntu:  shibo-ubuntu@ubuntu:~$ ...

  8. metaq spring

    spring metaq spring bean 配置 <bean id="sessionFactory" class="com.taobao.metamorpho ...

  9. 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定

    本章讨论在力学图中经常使用到的事件( Event ),然后对[p=555">进阶 - 第 2.0 章]的人物关系图进行改进.使用户可以固定拖拽的对象. 在[入门 - 第 9.2 章]和 ...

  10. 如何使用Maven创建web工程(详细步骤)

    使用eclipse插件创建一个web project 首先创建一个Maven的Project例如以下图 我们勾选上Create a simple project (不使用骨架) 这里的Packing ...