如何使用linq操作datatable进行分组
使用微软.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进行分组的更多相关文章
- Linq 操作DataTable
class ClientStruct { public string ID = "ID"; public string Name = "Name"; publi ...
- Linq实现DataTable的分组统计
DataTable dt = GetTestData(10); //获取10条测试数据 var queryByService = from r in dt.AsEnumerable() group r ...
- C# 中 Linq 操作 DataTable
方法一:更简洁 Console.WriteLine(dt.Rows.OfType<DataRow>().First(x => x.Field<string>(" ...
- Linq操作DataTable
IEnumerable<DataRow> q = from dr in dt.AsEnumerable() where dr.Field& ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- 关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧
项目中用到了对两个集合的帅选等操作,简单总结下 1.Linq操作多个Datable 可以通过AsEnumerable()方法对DataTable进行Linq操作 //获取数据表所有数据 DataTab ...
- Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解
返回<8天掌握EF的Code First开发>总目录 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to ...
- 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解
本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...
- 【转】Linq实现DataTable行列转换
出处:http://www.cnblogs.com/li-peng/ 转换前的table: 转换后的table: 代码里有详细的说明, 还有一些参数我都截图了下面有 using System;usin ...
随机推荐
- 事件冒泡 ,停止事件冒泡 e.stopPropagation()
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>防止起泡 ...
- 合理设置MTU,提升下载速度
可能很少有雷友注意过“本机.网络”的“MTU”值对自己网络性能产生的影响.对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般. MTU是什么? “MTU=最大传输单元 单位:字节” ...
- 安装numpy、nltk问题汇总
系统环境是win7(64bit)+python3.4(64bit)+numpy1.82+vs2012 1.假设用sourceforge上编译好的32bit的exe安装,会提示'python versi ...
- 无显示仍然发挥树莓派——VNCserver设定
谁说没有显示器就不能玩树莓派的图形界面了.不要忘了VNCserver哦! VNC(Virtual Network Computing)属于一种网络显示系统,也就是说它能将完整的窗体界面通过网络传输到还 ...
- /dev/shm(转)
引用网上:/dev/shm首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这 ...
- android 反编译,反,注射LOG
反编译smali注射显示LOG该代码.以后使用: .class public Lnet/iaround/connector/DebugClass; .super Ljava/lang/Object; ...
- 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length
// 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba ...
- head first c<11>在根据网络编程
博文可以在一个大的网络通信实现,但是,一个人只能起到,我们能够给每个clientfork()子进程,实现诸多的服务. 方法: client连到server以后,server启动一个新创建的套接字对话. ...
- Nginx + unicorn 运行多个Rails应用程序
PS:第一次写的很详细,可惜发布失败,然后全没了,这是第二次,表示只贴代码,剩下的自己领悟好了,这就是所谓的一鼓作气再而衰吧,希望没有第三次. 版本: ruby 2.1.0 rails 4.0.2 n ...
- Preemption Context Switches 和 Synchronization Context Switches
Preemption Context Switches测量操作系统任务调度线程处理器上执行的次数,以及切换到较高-priority螺纹,数. Synchronization context switc ...