今天看了一些关于lambda表达式的知识,然后对于Func<T,TResult>泛型委托不太熟悉,便查了查相关资料,又引出来了基于谓词筛选值序列这个对我来说的新鲜知识点,于是去查MSDN,以下是看到的一些相关介绍:

此方法通过使用延迟执行实现。 即时返回值为一个对象,该对象存储执行操作所需的所有信息。 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

在查询表达式语法中,where (Visual C#) 或 Where (Visual Basic) 子句转换为 Where<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) 的一个调用。

List<string> fruits =
new List<string> { "apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry" }; IEnumerable<string> query = fruits.Where(fruit => fruit.Length < ); foreach (string fruit in query)
{
Console.WriteLine(fruit);
}

上面这段代码的输出结果:

apple
mango
grape 上面是一个简单地示例,接下来看一个稍微复杂的,直接上代码了:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LambdaTest
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
list.AddRange(new int[] { , , , , , , , , }); Func<int, bool> fi = new Func<int, bool>(MoreThan5);
IEnumerator<int> ie = list.Where<int>(fi).GetEnumerator(); //效果与list.Where<int>(fi).GetEnumerator()一致
//IEnumerator<int> ie = list.Where<int>(x => x > 5).GetEnumerator(); //效果与list.Where<int>(fi).GetEnumerator()一致
//IEnumerator<int> ie = list.Where(delegate(int i){return i > 5;}).GetEnumerator(); while (ie.MoveNext())
{
Console.WriteLine(ie.Current.ToString());
} Console.ReadKey();
} public static bool MoreThan5(int i)
{
return i > ;
}
}
}

上面这段代码的输出结果:

7

6

10

8

其中用到了IEnumerator和泛型以及委托的相关知识,希望可以作为引子,给大家带来一点新的赶脚~~

关于lambda表达式的一些学习——基于谓词筛选值序列的更多相关文章

  1. lambda-基于谓词筛选值序列

    此方法通过使用延迟执行实现. 即时返回值为一个对象,该对象存储执行操作所需的所有信息. 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 V ...

  2. lambda表达式的一些学习

    关于lambda表达式的一些学习,例举出来. 1.学生实体类 public class Student { private String name; private int age; public S ...

  3. C# 委托、Lambda表达式和事件——学习总结

    1.概括 1.1.委托是寻址方法的.NET版本,类似C++中的指针.委托可以理解成指向函数的指针,它是类型安全的,定义了具体的参数和返回值. ——定义一个委托,实际上是定义一个类.委托是对方法的引用, ...

  4. java lambda表达式检查list集合是否存在某个值

    import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class ...

  5. Lambda表达式的本质是匿名函数

    1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...

  6. C# Lambda表达式 基础

    什么是Lambda 表达式? "Lambda表达式"实际上是一个方法,只不过该方法是一个匿名方法(就是没有名字的方法(函数),就是说只有在定义的时候能调用,在其他地方就不能调用了) ...

  7. C#从委托、lambda表达式到linq总结

    前言 本文总结学习C#必须知道的基础知识,委托.监视者模式.常用lambda表达式.linq查询,自定义扩展方法,他们之间有什么关系呢?匿名委托是如何演变成lambda表达式,lambda再如何导出l ...

  8. 24.C# Lambda表达式

    1.Lambda表达式的含义 Lambda表达式是C#3.0引入的一种结构,使用它可以简化C#编程. 2.Lambda表达式与匿名方法 我们知道匿名方法可用于事件处理,如下delegate声明了一个匿 ...

  9. 定制操作(传递函数或lambda表达式)

    很多算法都会比较输入序列中的元素.默认情况下,这类算法使用元素类型的<或==运算符完成比较.标准库还为这些算法定义了额外的版本,允许我们提供自己定义的操作来代替默认运算符. 例如,sort算法默 ...

随机推荐

  1. ASP.NET MVC bootstrap 3 ie 8兼容问题及错误解决(取消IE禁用IE脚本调试定位js文件错误)

    因要做一个B/S架构的项目,使用MVC框架技术,本人不擅长页面设计美工,只好用bootstrap框架,在chrome内核系列的浏览器和IE 11中显示都没有问题,但是在 IE 8下显示却不正常,表格无 ...

  2. RDLC 子报表

    1.RDLC 设计页面,拖入table或者矩形 2.右击表格或者矩形单元格,插入--子报表 3.输入名称和将此报表用作子报表 名称:显示在设计页面上的,仅作观看作用 将此报表用作子报表:填写目录下的需 ...

  3. Linux 常见问题解决办法

    1.用户切换后显示 -bash-4.1 $ 表示该用户下的配置文件缺失,切换到该用户下(-bash-4.1),使用命令查(pwd)看用户所在位置.如 /home/gpadmin. 使用 cp -a / ...

  4. 对 OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 一文的理解

    一点最重要的学习方法:  当你读一篇论文读不懂时,如果又读了两遍还是懵懵懂懂时怎么办???方法就是别自己死磕了,去百度一下,如果是很好的论文,大多数肯定已经有人读过并作为笔记了的,比如我现在就把我读过 ...

  5. 内存屏障 & Memory barrier

    Memory Barrier http://www.wowotech.net/kernel_synchronization/memory-barrier.html 这里面讲了Memory Barrie ...

  6. Redis使用及优化入门

    Redis的优势 MySQL读写慢,Redis内存数据库,读写速度快. 少量的数据要经常读写,尤其是读操作,读写速度要求高. 丰富的数据结构,Redis支持5种数据结构,MySQL字段变化,需要手动维 ...

  7. javascript中this指针

    看完此片文章豁然开朗,非常感谢.javascript技术难点(三)之this.new.apply和call详解 下面说一说自己的理解: this指针总是指向调用他的对象,其实我更愿意理解为:this指 ...

  8. asp.net登录时验证码的制作与验证

    1.新建一个页面,ImageCode.aspx 2.在Page_Load中添加如下代码 string tmp = RndNum(4); HttpCookie a = new HttpCookie(&q ...

  9. 雅虎(yahoo)前端优化十四条军规

    第一条.尽可能的减少 HTTP 的请求数 (Make Fewer HTTP Requests ) http请求是要开销的,想办法减少请求数自然可以提高网页速度.常用的方法,合并css,js(将一个页面 ...

  10. 收集C#常用类:对图片的处理操作

    using System; using System.Collections; using System.IO; using System.Drawing; using System.Drawing. ...