linq 语法lambpa语法总结
来源:互联网 发布:ultraedit软件下载 编辑:程序博客网 时间:2024/05/22 09:51
linq表达式可以从数据源(这里好似一个int[])中,按照一定条件(where语句指定)检索数据,生成一个新的序列,但是不改变单个元素。然后可以根据各种方式对返回的序列进行排序或者分组
1、查询语法与方法语法:
① 查询语法(query syntax)是声明形式的,看上去和SQL语句很相似。查询语法使用查询表达式形式书写。
② 方法语法(method syntax)是命令形式的,它使用的是标准的方法调用。方法是一组叫做标准查询运算符的方法。
③ 在一个查询中也可以组合两种形式。
例子:
1 protected void btnSel_Click(object sender, EventArgs e) 2 { 3 int[] num = { 2, 5, 34, 66, 96, 80, 13 }; 4 //查询语法 5 6 var numsel = from n in num 7 where n < 35 8 select n; 9 10 11 //方法语法12 //var numsel = num.Where(x=>x<35);13 14 //两种形式的结合 linq表达式可以查询关于数据源信息的单一的值 下面得到大于35的分数的数量15 int numcount = (from n in num16 where n < 3517 select n).Count();18 19 20 foreach (var item in numsel)21 {22 Response.Write(item+" ");23 }24 25 Response.Write(numcount);26 }
linq表达式可以对查询的数据进行加工封装或者转换成新的类型。例如上面的例子我们只是返回了一个int集合,如果没有上下文信息我们很难分辨这个结果表示什么,利用linq表达式的Select子句可以将查询记过格式化成String类型的描述信息的集合。我们甚至可以从一条记录中检索特定的信息然后构建一个新的对象类型
var numsel = from n in num where n<35 select
string.Format("数字:{0}",n)
2、查询变量
①创建int数组。
②返回一个IEnumerable对象,它可以用来枚举查询结果。
③执行一个查询,然后调用一个方法(Count)来返回从查询返回的项的总数。
1 protected void btnCh_Click(object sender, EventArgs e) 2 { 3 int[] nums = { 2, 6, 3, 17 }; 4 //返回枚举数 5 IEnumerable<int> numsel = from n in nums 6 where n < 13 7 select n;//输出:2,6,3 8 9 int numcount = (from n in nums10 where n < 1311 select n).Count();//输出:312 13 foreach (int item in numsel)14 {15 Response.Write(item+",");16 }17 Response.Write(numcount);18 }
PS:有必要用枚举么?觉得还是1中的直接用方便。
3.查询表达式的结构 :查询表达式必须以 from 子句开头,并且必须以 select 或 group 子句结尾
子句必须按照一定的顺序出现
① from子句和select...group子句这两部分是必须的。
② 其他子句是可选的。
from
查询体
from…
let…
where…
(可选)
order by…
(可选)
select…
group…
Into
(可选)
PS:不常用就没怎么总结了。
4.利用orderby可以对数字进行排序;
例如:
1 protected void btnpx_Click(object sender, EventArgs e) 2 { 3 int[] nums = { 3, 15, 67, 72, 21, 34, 21, 6 }; 4 var numsel = from n in nums 5 orderby n 6 //where n<50 7 select n;//输出:3,6,15,21,21,34,67,72, 8 foreach (var item in numsel) 9 {10 Response.Write(item+",");11 }12 }
PS:如果用来替换冒泡排序不是挺好!
5.lambda表达式
第一行演示了被赋值给变量del的匿名方法。
第三行演示了被转换成lambda表达式后的相同的匿名方法
1 delegate double MyDel(int par); 2 protected void btnlam_Click(object sender, EventArgs e) 3 { 4 MyDel del = delegate(int x) { return x + 1; };//匿名方法 5 6 MyDel le1 = (int x) => { return x + 1; };//lambda表达式 7 MyDel le2 = (x) => { return x+1; }; 8 MyDel le3 = x => { return x + 1; }; 9 MyDel le4 = x => x + 1;10 Response.Write(del(5));11 Response.Write(le1(5));12 Response.Write(le2(5));13 Response.Write(le3(5));14 Response.Write(le4(5));15 }
6.lambda表达式的优越性
例子:计算数组中奇数的数量
① 使用委托
1 static bool IsOdd(int x)//委托对象使用方法 2 { 3 return x % 2 == 1;//如果是x奇数,返回true 4 } 5 protected void btndelegate_Click(object sender, EventArgs e) 6 { 7 //使用委托 8 int[] intArray = new int[] { 3, 4, 5, 2, 53, 21 }; 9 Func<int, bool> myDel = new Func<int, bool>(IsOdd);//委托对象10 var countOdd = intArray.Count(myDel);11 12 Response.Write("countOdd is:" + countOdd);//输出:coountOdd is 413 }
② 使用匿名方法
1 protected void btnfun_Click(object sender, EventArgs e) 2 { 3 //使用匿名方法 4 int[] intArray = new int[] { 3, 4, 5, 2, 53, 21 }; 5 Func<int, bool> myDel = delegate(int x) 6 { 7 return x % 2 == 1; 8 }; 9 var countOdd = intArray.Count(myDel);10 11 Response.Write("countOdd is:" + countOdd);//输出:coountOdd is 412 }
③ 使用lambda表达式
1 protected void btnlambda_Click(object sender, EventArgs e)2 {3 //使用lambda表达式4 int[] intArray = new int[] { 3, 4, 5, 2, 53, 21 };5 var countOdd = intArray.Count(x => x % 2==1);//lambda表达式6 7 Response.Write("countOdd is:" + countOdd);//输出:coountOdd is 48 }
- linq 语法lambpa语法总结
- LINQ语法
- LINQ语法
- Linq语法
- Linq语法
- linq语法
- Linq 语法
- Linq语法
- Linq语法
- 黑马程序员 LINQ(1) 介绍LINQ、语法 总结
- LINQ语法 收藏
- Linq基本语法
- #3.0 LINQ 查询语法
- LINQ中的Aggregate语法
- Linq基本语法
- Linq语法构成
- XML LINQ语法
- Linq基本语法概述
- JComboBox itemStateChanged事件总是触发两次
- eclipse 设置成护眼色
- Android中XML的一系列操作,增、删、改、查!!!
- linux查看memcached状态
- DSP学习总结——Boot引导模式
- linq 语法lambpa语法总结
- 使用具有权威说服力的实例辨明C++中的malloc与new
- ZOJ Problem Set - 2297 Survival 【状压dp】
- 每天一点儿Java--ComboBox
- ACM Property Distribution(挑战程序设计竞赛)
- js中split用法
- 页面弹出动画,类似抽屉效果
- 离散余弦变换(DCT)
- 机房收费系统之日结账单和周结账单