今天大家一同学习下lambda表达式, lambda表达式使用起来更方便, lambda表达式其实是一个匿名函数,使用的运算符为=>

语法: (参数)=》表达式

如果只有一个参数,可以不使用括号,多个参数用逗号隔开.

(x,y)=>x==y

如果没有参数,使用空括号表示

()=>表达式

1.where()方法

代码:

  1. privatevoid button1_Click(object sender, EventArgs e)
  2. {
  3. //查询大于10的元素
  4. string str = "";
  5. int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
  6. var query = arrTwo.Where(i=>i>=10);
  7. foreach (var item in query)
  8. {
  9. str += item.ToString() + "\r\n";
  10. }
  11. Console.Write(str);
  12. }
    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() + "\r\n";
}
Console.Write(str);
}

结果

10    90

2. OrderBy()排序

代码:按升序排列

  1. //排序
  2. int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
  3. var query = arrTwo.OrderBy(i =>i);
  4. foreach (var item in query)
  5. {
  6. Console.WriteLine(item.ToString());
  7. }
     //排序
int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
var query = arrTwo.OrderBy(i =>i);
foreach (var item in query)
{
Console.WriteLine(item.ToString());
}

结果:

  1. 3
  2. 4
  3. 6
  4. 8
  5. 10
  6. 90
3
4
6
8
10
90

如果是想按降序排列,使用OrderByDescending方法!

3.Skip()和SkipWhile()

Skip()用来跳过指定数目的元素,

SkipWhile是根据一定的条件跳过满足条件的元素,但是,SkipWhile只跳过第一个满足条件的元素,并不是跳过所有满足条件的元素,

如果下一个元素不满足条件,则停止向下执行

代码

  1. //跳过前3个元素
  2. int[] arrTwo = { 10, 4, 6, 8, 90, 3 };
  3. var query = arrTwo.Skip(3);
  4. Console.WriteLine("skip用法");
  5. foreach (var item in query)
  6. {
  7. Console.WriteLine(item.ToString());
  8. }
  9. Console.WriteLine("skipwhile用法");
  10. var query1 = arrTwo.SkipWhile(i=>i>6);
  11. foreach (var item in query1)
  12. {
  13. Console.WriteLine(item.ToString());
  14. }
//跳过前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());
}

结果:

  1. skip用法
  2. 8
  3. 90
  4. 3
  5. skipwhile用法
  6. 4
  7. 6
  8. 8
  9. 90
  10. 3
skip用法
8
90
3
skipwhile用法
4
6
8
90
3

4.Take()和TakeWhile()

Take()从集合中提取指定书目的元素

TakeWhile从集合中第一个元素开始,如果为true,继续提取下一个元素,如果为FALSE,则停止向下执行。

如果第一个元素不满足条件,则不往下执行。

代码:

  1. //提取元素
  2. int[] arrTwo = { 10,20, 4, 6, 8, 90, 3 };
  3. var query = arrTwo.Take(3);
  4. Console.WriteLine("take用法");
  5. foreach (var item in query)
  6. {
  7. Console.WriteLine(item.ToString());
  8. }
  9. //只提取大于8的元素
  10. var query2 = arrTwo.TakeWhile(i=>i>8);
  11. Console.WriteLine("TakeWhile用法");
  12. foreach (var item in query2)
  13. {
  14. Console.WriteLine(item.ToString());
  15. }
//提取元素
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());
}

结果:

  1. take用法
  2. 10
  3. 20
  4. 4
  5. TakeWhile用法
  6. 10
  7. 20
take用法
10
20
4
TakeWhile用法
10
20

5.Distinct()消除集合中重复的元素

代码:

  1. privatevoid button5_Click(object sender, EventArgs e)
  2. {
  3. //消除集合中的元素
  4. int[] arrTwo = { 10, 20, 4, 6, 8, 90, 3,10,6 };
  5. var query = arrTwo.Distinct();
  6. foreach (var item in query)
  7. {
  8. Console.WriteLine(item.ToString());
  9. }
  10. }
 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用来求两个集合的差集

Linq入门演练---(2)lambda表达式的更多相关文章

  1. LINQ教程三:Lambda表达式解剖

    C#3.0(.NET3.5)中引入了Lambda表达式和LINQ.Lambda表达式是使用一些特殊语法表示匿名方法的较短方法. 最基本的Lambda表达式语法如下: (参数列表)=>{方法体} ...

  2. 30分钟入门Java8之lambda表达式

    前言 Google在今年发布Android N开发者预览版,一并宣布开始支持Java 8.我们终于能在Android开发中使用到Java8的一些语言特性了.目前支持: 默认方法 lambda表达式 多 ...

  3. Linq入门演练---(1)基本用法-分组,排序,内连接

    这一节大家共同学习下LINQ的基本用法,主要包括LINQ的分组,排序,和内外连接. 1.分组 基本语法:  group element by key element 表示查询结果返回的元素,key表示 ...

  4. linq本质扩展方法+lambda表达式

    string[] names = { "aa","bb","cc","dd"}; /* IEnumerable<s ...

  5. Jquery实现对Array数组实现类似Linq的Lambda表达式的Where方法筛选

    平时使用Linq,习惯了Lambda表达式,用着非常顺手,奈何在Jquery里面不能这样用,只能循环一个个判断.趁空闲时间找了找,自己写了这样的扩展方法.目前写出了三种方案,没有比较性能,觉得都可以用 ...

  6. C# Lambda表达式

    C# Lambda表达式 Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可以包含表达式 ...

  7. C#中的Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  8. Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  9. Lambda表达式 之 C#

    Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可以包含表达式和语句,并且可用于创建委托 ...

随机推荐

  1. 非正确使用浮点数据由项目产生BUG讨论的问题

    乘分配 当小学学会了乘法分配.详细乘法分配:并与多个两个数相乘的,他们能够把这个数字乘以,然后加入.由于一个恒定.乘法分配律也能够使用表达式的定义"(a+b)×c = a×c+b×c&quo ...

  2. 解决apache+tomcatserver环境中文乱码的问题

    在使用apache做转发服务器时,碰到了中文乱码的问题. 说说解决思路: 1.通常乱码是由于编码不统一造成的.所以要先推断是不是由于编码问题造成的,假设是的话,那统一编码就能够去解决. 2.tomca ...

  3. JCombobox组合框效果实现(转)

    JCombobox是Swing中比较常用的控件,它显示一个项列表,扩展的是ListModel接口的模型,它的显示绘制器通过实现ListCellBenderer接口来绘制列表单元,下面介绍 ①普通应用例 ...

  4. iOS的图表显示的实现

    在app通常有家居展览的照片,显示广告.或者头条新闻.通常网易新闻client 如图,红框框的位置就是一个典型的图展, 熟悉iOS的人肯定知道,这个是个UIScrollview,里面加几张图片就可以实 ...

  5. IE6浏览器的一些问题

    背景图像缓存 // IE6 background image caching fix. try { document.execCommand("BackgroundImageCache&qu ...

  6. 矩阵求逆c++达到

    高斯消元法能够用来找出一个可逆矩阵的逆矩阵.设A 为一个N * N的矩阵,其逆矩阵可被两个分块矩阵表示出来.将一个N * N单位矩阵 放在A 的右手边,形成一个N * 2N的分块矩阵B = [A,I] ...

  7. SQL Server 2008 R2 跟踪标志

    原文:SQL Server 2008 R2 跟踪标志 跟踪标志用于临时设置特定服务器的特征或关闭特定行为.例如,如果启动 SQL Server 的一个实例时设置了跟踪标志 3205,将禁用磁带机的硬件 ...

  8. JVM的参数详解(转)

    12年毕业到先在处理第一年外这几年纯属于打酱油,当初自学Java然后就出来找工作了,还有第一家面试就通过了挺幸运的 但之后的这段时间一直是处于吃老本的状态.最近心情真的很不好,各种黄老邪!一直处于堕落 ...

  9. Repository、IUnitOfWork

    Repository.IUnitOfWork 在领域层和应用服务层之间的代码分布与实现 本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里 ...

  10. Lazy<T>延迟初始化

    延迟初始化:Lazy<T> 1. 概述 我们创建某一个对象需要很大的消耗,而这个对象在运行过程中又不一定用到,为了避免每次运行都创建该对象,这时候延迟初始化(也叫延迟实例化)就出场了. 延 ...