Lamdba及DataTable AsEnumerable()的使用

Lamdba是延迟执行的,实际上什么都没有发生,当真正使用对象的时候(例如调用:First, Single, ToList….的时候)才执行。

1.Where语句使用

var var_dtTable = dtTable.AsEnumerable().Where<DataRow>(W => W["NAME"].ToString()=="张三");
 
int count = var_dtTable.Count<DataRow>();//获取dtTable中NAME为张三的个数

2.Average语句使用

int avg = dtTable.AsEnumerable().Average<DataRow>(A => float.Parse(A["avg_name"].ToString()))
//获取dtTable中avg_name列的平局数

3.GroupBy

DataTable dtTable = new DataTable();//数据源
DataTable dtResult = new DataTable();
dtResult.Columns.Add("groupBy_name", typeof(string));
dtResult.Columns.Add("sum_name", typeof(int));
dtResult.Columns.Add("count_name", typeof(int));
var var_dtTable= dtTable.AsEnumerable().GroupBy(G => G["groupBy_name"].ToString()).Select(S => new {
               groupBy_name= s.Key,//获取分组的值
               sum_name= s.Sum(m => m.Field<int>("sum_name")),//获取列名为sum_name数据的和
               count_name= s.Count(m => m.Field<int>("count_name"))//获取列名为count_name数据的个数
               });
var_dtTable.ToList().ForEach(f=> dtResult.Rows.Add(f.groupBy_name,f.sum_name,f.count_name);
//对应的顺序为dtResult列的顺序

4.OrderBy

DataTable dtTable = new DataTable();//数据源
dtTable = dtTable.AsEnumerable().OrderByDescending(o => o["OrderBy_name"]).CopyToDataTable();//降序
dtTable = dtTable.AsEnumerable().OrderBy(o => o["OrderBy_name"]).CopyToDataTable();//升序

5.Distinct

DataTable dtTable = new DataTable();//数据源
dtTable = dtTable.AsEnumerable().Distinct(new ColumnEquals("column_name")).CopyToDataTable();
//column_name是要Distinct列的名字

DataTable AsEnumerable 的使用

var p = DataTable.AsEnumerable().Where(t => t.Field<int>("ChannelID") == int.Parse(code)).Select(d => d);
if (p != null && p.Count() > 0)
{
  return p.Select(c => c.Field<string>("name")).First();
}
else
{
  return "";
}
清晰完整PDF版本,是我从网上买来的 共 150MB,分为13个分卷 在 优快云 上只有我整个是清晰完整的 LINQ 入门及应用 .NET 2010 SQL LINQ入门及应用 3/13 原价:48.00元 作者:王的强,张晓娜,周静 编著 出版社:清华大学 出版日期:2009-5-1 ISBN:9787302200253 字数:661000 页码:427 -------------------------------------------------------------------------------- 本书介绍微软最前沿的数据查询编程技术,内容由160个知识点实例加5个综合应用案例组成,光盘中提供了涉及到的全部示例源程序项目,对于将要从事正规商业开发的人员有很强的示范性和指导作用。 内容提要 -------------------------------------------------------------------------------- 本书系统、全面地介绍了微软最新推出的LINQ数据开发技术。   本书采取以实践为主、以理论为辅的方法,首先对C#新改进的一些语法做了详细的剖析,让读者领会C#语法的新特点,为后面的学习打下基础,然后对LINQ各个子句和组件进行了实例讲解,通过一个个生动的示例,带领读者由浅入深、系统地学习和掌握LINQ技术。   本书对开发步骤的详细介绍,有助于读者更好地掌握Microsoft Visual Studio 2008开发环境。各个章节中的综合实例,除了充分演示LINQ技术外,还努力引导读者适应面向对象的开发方式。   配书光盘中提供了书中所有的源程序(均为VS2008应用项目),全部项目均经过严格的测试并通过。   本书可供相关技术研究人员、广大.NET应用程序开发人员和用户参考,也可作为高等院校计算机、电子商务以及信息类专业的教材。 目录 -------------------------------------------------------------------------------- 第1章 LINQ介绍  1.1 什么是LINQ  1.2 为什么要用LINQ  1.3 搭建LINQ开发环境   1.3.1 安装 Visual Studio 2008   1.3.2 配置 Visual Studio 2008  1.4 初识LINQ技术   1.4.1 初识LINQ to Objects   1.4.2 初识LINQ to ADO.NET   1.4.3 初识LINQ to XML  1.5 小结 第2章 C#语言的新特性及相关知识  2.1 .NET各个版本之间的关系  2.2 C#语言的新特性   2.2.1 自动属性和属性访问器的保护级别   2.2.2 可空类型   2.2.3 泛型   2.2.4 代理   2.2.5 迭代器与yield关键字   2.2.6 隐式类型的局部变量   2.2.7 对象和集合初始化器   2.2.8 匿名类型   2.2.9 扩展方法   2.2.10 匿名方法和Lamdba表达式  2.3 综合实例:C#高亮编辑及编译运行器  2.4 小结 第3章 LINQ基本子句介绍  3.1 概述  3.2 from子句   3.2.1 单个from子句   3.2.2 复合from子句   3.2.3 多个from子句  3.3 where子句   3.3.1 常见的where子句查询   3.3.2 在where子句中使用自定义函数   3.3.3 动态谓词的筛选  3.4 select子句   3.4.1 输出查询结果   3.4.2 对查询结果进行投影  3.5 group子句   3.5.1 IGrouping泛型接口   3.5.2 分组查询  3.6 into子句  3.7 排序子句   3.7.1 OrderBy和OrderByDescending   3.7.2 ThenBy和ThenByDescending  3.8 let子句  3.9 join子句  3.10 小结 第4章 用于集合、文件、字符串对象的LINQ(LINQ to Objects)  4.1 LINQ标准查询运算符概述  4.2 Enumerable类的介绍  4.3 用于延期执行的Enumerable类方法成员   4.3.1 Take方法   4.3.2 TakeWhile方法   4.3.3 Skip方法   4.3.4 SkipWhile方法   4.3.5 Take、TakeWhile、Skip、SkipWhile小结   4.3.6 Reverse方法   4.3.7 Distinct方法   4.3.8 Union方法   4.3.9 Concat方法   4.3.10 Intersect方法   4.3.11 Except方法   4.3.12 Range方法   4.3.13 Repeat方法   4.3.14 Empty方法   4.3.15 DefaultIfEmpty方法   4.3.16 Cast方法   4.3.17 OfType方法   4.3.18 AsEnumerable方法  4.4 用于立即执行的Enumerable类方法成员  4.5 综合实例  4.6 小结 第5章 用于数据库访问的LINQ (LINQ to SQL) 第6章 用于XML访问的LINQ (LINQ to XML) 第7章 综合应用实例:商品管理解决方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值