linQ学习笔记之三高级语句
linq语句查询执行的时机
第一步获取数据源
int [] obejct = new int[]{1,2,3,4,5,6,7,8,9}
第二步定义查询
var even = numbers.where(p=>p%2==0).select(p=>{Console.WritLine("HI")})
第三步执行查询
foreach(var item in even ){}
定义查询后,查询直到需要枚举结果是才被真正执行,这种方式称为“”延迟执行“”
当查询方法返回单一值时,查询立即执行
因此,可以通过以下技巧在定义=查询时就强制执行查询
查询语句与查询方法存在着紧密方法
1.CLR本身并不理解查询语句,它只理解查询方法
2.编译器负责在编译时将查询语句翻译为查询方法
3.大部分查询方法都有对应的查询语句形式,例如select()对应select
4.部分查询方法目前在C#中还没有对应的查询语句:
入Count()和Max()这时只能采用以下替代方案
查询方法
查询语句 + 查询方法的混合方法
5.一般情况下,建议使用可读性更好的查询语句
高级查询方法
聚合类
Count , Max/Min ,Average
int[] arr = {11,21,3,4,5,6,7,8,9,10,11,12,155 };
//高级查询方法 聚合类
Console.WriteLine("arr最大值" + arr.Max());
Console.WriteLine("arr最小值" + arr.Min());
Console.WriteLine("arr最平均值" + arr.Average());
Console.WriteLine("arr数组长度" + arr.Count());
Console.WriteLine("arr总和" + arr.Sum());
排序类
ThenBy
int[] arr = {11,21,3,4,5,6,7,8,9,10,11,12,155 };
//排序类
var arr1 = arr.OrderBy(p => p.ToString().Substring(0, 1));
分区类
Take, TaKeWhile, SKip, SKipWhile
int[] arr = {11,21,3,4,5,6,7,8,9,10,11,12,155 };
//二次排序
//var arr1 = arr.OrderBy(p => p.ToString().Substring(0, 1)).ThenBy(p => p);
//arr1.Print();
//var arr1 = arr.OrderBy(p => p.ToString().Substring(0, 1));//二次排序
//var arr2 = from i in arr1 orderby i descending select i;
//arr2.Print();
集合类
Distinct
//var arr1 = arr.Distinct();
//arr1.Print(); 去掉相同的属性
生成类
Range ,Repeat
//生成类--静态类
//从10开始产生连续的50个数据
var arr1 = System.Linq.Enumerable.Range(10,50);
//生成重复的数据
var arr2 = System.Linq.Enumerable.Repeat(DateTime.Now,50);
arr1.Print();
arr2.Print();
遍历的拓展方法
/// <summary>
/// 创建一个静态的类,拓展类
/// </summary>
public static class ExtraClass
{
/// <summary>
/// 拓展方法 必须是静态的
/// </summary>
/// <param name="s">对哪一个属性进行的拓展</param>
/// <returns></returns>
public static string ToPascal(this string s)
{
return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
}
//为IEnumerable提供输出方法
public static void Print(this IEnumerable ie)
{
IEnumerator IEU = ie.GetEnumerator();
while (IEU.MoveNext())
{
Console.WriteLine(IEU.Current);
}
} }
总结
和其他几类方法不同,Range/Repeat 不是扩展方法,而是普通的静态方法
Range只能产生整数序列
Repenat 可以产生泛型序列
所有的查询方法都存放在System.Linq.Enumerable静态类中
linQ学习笔记之三高级语句的更多相关文章
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...
- matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...
- Hadoop学习笔记(7) ——高级编程
Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...
- 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句
原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...
- linq学习笔记
最近在学习linq的一些基础知识,看了c#高级编程及阅读了园子内部几篇优秀的博文,有所体会,感觉应该记录下来,作为以后复习使用.都是一些最基础的知识,大致分为三个部分:linq预备知识:linq查询: ...
- (转)Linq学习笔记
写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...
- C#之Linq学习笔记【转】
写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...
- hive学习笔记之三:内部表和外部表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Django 学习笔记之三 数据库输入数据
假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...
随机推荐
- poj题目
poj2965 poj1753:标准的BFS+位运算优化 poj1328:线段覆盖变种,把圆对应到线段上,贪心求解 poj2109:高精度开根,二分+高精度,注意要判断答案的位数,如果按照题目给的范围 ...
- 【前端积累】常用事件的js公用方法
var eventUtil={ // 添加句柄 addHandler:function(element,type,handler){ if(element.addEventListener){ ele ...
- 轻量级jQuery语法高亮代码高亮插件jQuery Litelighter。
<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>jQ ...
- C程序设计语言学习笔记
在Windows下运行C语言程序 Windows下的编程工具使用 VC 6.0,下面讲解如何在VC 6.0下运行上节的"Hello, world"程序. 1) 新建Win32 Co ...
- 读取TDrawGrid之获取博易数据
朋友叫我帮忙写个从博易读取数据的工具,可无奈数据所在控件并不是Windows标准控件,也就是说没办法通过发送系统消息来获取 相关数据,于是乎试了一下从内存直接读取,可最后并不能达到预期目的,原因是笔者 ...
- C#-WebForm-Request、Response、QueryString、Repeater删
知识点: Request - 获取请求对象 专门用来接传递过来的值 Request["key"](李献策lxc) 1.获取地址栏传递过来的值 get 2.获取表单传递过来的参数值 ...
- ios小数向上、下取整,计算结果向上、下取整
[摘要:小数背上与整,指小数局部间接进1 x=3.14, ceilf (x)=4 小数背下与整,指间接往失落小数局部 x=3.14,floor(x)=3 盘算效果背上与整 A被除数,B除数 ,(AB- ...
- html5拖拽事件 xhr2 实现文件上传 含进度条
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- BZOJ3944 Sum
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 批量 ping 测试脚本
是否会使用 vpn 工作,已经成为魔法师和麻瓜之间最重要的区分.使用 vpn 工作,也产生了其它一些奇奇怪怪的问题,比如,选择 vpn 服务器. 你要测试哪个 vpn 离你最近. 所以,就有了下面的脚 ...