今天大家一同学习下lambda表达式, lambda表达式使用起来更方便, lambda表达式其实是一个匿名函数,使用的运算符为=>
语法: (参数)=》表达式
如果只有一个参数,可以不使用括号,多个参数用逗号隔开.
(x,y)=>x==y
如果没有参数,使用空括号表示
()=>表达式
1.where()方法
代码:
- privatevoid button1_Click(object sender, EventArgs e)
- {
- //查询大于10的元素
- string str = "";
- int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
- var query = arrTwo.Where(i=>i>=10);
- foreach (var item in query)
- {
- str += item.ToString() + " ";
- }
- Console.Write(str);
- }
private void button1_Click(object sender, EventArgs e) { //查询大于10的元素 string str = ""; int[] arrTwo = { 10, 4, 6, 8, 90, 3 }; var query = arrTwo.Where(i=>i>=10); foreach (var item in query) { str += item.ToString() + " "; } Console.Write(str); }
结果
10 90
2. OrderBy()排序
代码:按升序排列
- //排序
- int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
- var query = arrTwo.OrderBy(i =>i);
- foreach (var item in query)
- {
- Console.WriteLine(item.ToString());
- }
//排序 int[] arrTwo = { 10, 4, 6, 8, 90, 3 }; var query = arrTwo.OrderBy(i =>i); foreach (var item in query) { Console.WriteLine(item.ToString()); }
结果:
- 3
- 4
- 6
- 8
- 10
- 90
3 4 6 8 10 90
如果是想按降序排列,使用OrderByDescending方法!
3.Skip()和SkipWhile()
Skip()用来跳过指定数目的元素,
SkipWhile是根据一定的条件跳过满足条件的元素,但是,SkipWhile只跳过第一个满足条件的元素,并不是跳过所有满足条件的元素,
如果下一个元素不满足条件,则停止向下执行
代码
- //跳过前3个元素
- int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
- var query = arrTwo.Skip(3);
- Console.WriteLine("skip用法");
- foreach (var item in query)
- {
- Console.WriteLine(item.ToString());
- }
- Console.WriteLine("skipwhile用法");
- var query1 = arrTwo.SkipWhile(i=>i>6);
- foreach (var item in query1)
- {
- Console.WriteLine(item.ToString());
- }
//跳过前3个元素 int[] arrTwo = { 10, 4, 6, 8, 90, 3 }; var query = arrTwo.Skip(3); Console.WriteLine("skip用法"); foreach (var item in query) { Console.WriteLine(item.ToString()); } Console.WriteLine("skipwhile用法"); var query1 = arrTwo.SkipWhile(i=>i>6); foreach (var item in query1) { Console.WriteLine(item.ToString()); }
结果:
- skip用法
- 8
- 90
- 3
- skipwhile用法
- 4
- 6
- 8
- 90
- 3
skip用法 8 90 3 skipwhile用法 4 6 8 90 3
4.Take()和TakeWhile()
Take()从集合中提取指定书目的元素
TakeWhile从集合中第一个元素开始,如果为true,继续提取下一个元素,如果为FALSE,则停止向下执行。
如果第一个元素不满足条件,则不往下执行。
代码:
- //提取元素
- int[] arrTwo = { 10,20, 4, 6, 8, 90, 3 };
- var query = arrTwo.Take(3);
- Console.WriteLine("take用法");
- foreach (var item in query)
- {
- Console.WriteLine(item.ToString());
- }
- //只提取大于8的元素
- var query2 = arrTwo.TakeWhile(i=>i>8);
- Console.WriteLine("TakeWhile用法");
- foreach (var item in query2)
- {
- Console.WriteLine(item.ToString());
- }
//提取元素 int[] arrTwo = { 10,20, 4, 6, 8, 90, 3 }; var query = arrTwo.Take(3); Console.WriteLine("take用法"); foreach (var item in query) { Console.WriteLine(item.ToString()); } //只提取大于8的元素 var query2 = arrTwo.TakeWhile(i=>i>8); Console.WriteLine("TakeWhile用法"); foreach (var item in query2) { Console.WriteLine(item.ToString()); }
结果:
- take用法
- 10
- 20
- 4
- TakeWhile用法
- 10
- 20
take用法 10 20 4 TakeWhile用法 10 20
5.Distinct()消除集合中重复的元素
代码:
- privatevoid button5_Click(object sender, EventArgs e)
- {
- //消除集合中的元素
- int[] arrTwo = { 10, 20, 4, 6, 8, 90, 3,10,6 };
- var query = arrTwo.Distinct();
- foreach (var item in query)
- {
- Console.WriteLine(item.ToString());
- }
- }
private void button5_Click(object sender, EventArgs e) { //消除集合中的元素 int[] arrTwo = { 10, 20, 4, 6, 8, 90, 3,10,6 }; var query = arrTwo.Distinct(); foreach (var item in query) { Console.WriteLine(item.ToString()); } }
6. Concat()连接两个集合,把两个集合中的数据放置到一个新的对象中
7. union用来求两个集合的并集
intersect用来求两个集合的交集
except用来求两个集合的差集