关于lambda表达式的一些学习——基于谓词筛选值序列
今天看了一些关于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表达式的一些学习——基于谓词筛选值序列的更多相关文章
- lambda-基于谓词筛选值序列
此方法通过使用延迟执行实现. 即时返回值为一个对象,该对象存储执行操作所需的所有信息. 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 V ...
- lambda表达式的一些学习
关于lambda表达式的一些学习,例举出来. 1.学生实体类 public class Student { private String name; private int age; public S ...
- C# 委托、Lambda表达式和事件——学习总结
1.概括 1.1.委托是寻址方法的.NET版本,类似C++中的指针.委托可以理解成指向函数的指针,它是类型安全的,定义了具体的参数和返回值. ——定义一个委托,实际上是定义一个类.委托是对方法的引用, ...
- java lambda表达式检查list集合是否存在某个值
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class ...
- Lambda表达式的本质是匿名函数
1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...
- C# Lambda表达式 基础
什么是Lambda 表达式? "Lambda表达式"实际上是一个方法,只不过该方法是一个匿名方法(就是没有名字的方法(函数),就是说只有在定义的时候能调用,在其他地方就不能调用了) ...
- C#从委托、lambda表达式到linq总结
前言 本文总结学习C#必须知道的基础知识,委托.监视者模式.常用lambda表达式.linq查询,自定义扩展方法,他们之间有什么关系呢?匿名委托是如何演变成lambda表达式,lambda再如何导出l ...
- 24.C# Lambda表达式
1.Lambda表达式的含义 Lambda表达式是C#3.0引入的一种结构,使用它可以简化C#编程. 2.Lambda表达式与匿名方法 我们知道匿名方法可用于事件处理,如下delegate声明了一个匿 ...
- 定制操作(传递函数或lambda表达式)
很多算法都会比较输入序列中的元素.默认情况下,这类算法使用元素类型的<或==运算符完成比较.标准库还为这些算法定义了额外的版本,允许我们提供自己定义的操作来代替默认运算符. 例如,sort算法默 ...
随机推荐
- Java时间的处理
1. Java计算时间依靠1970年1月1日开始的毫秒数.2. Date类的构造函数Date()返回代表当前创建的时刻的对象.Date的方法getTime()返回一个long值在数值上等于1970年1 ...
- MySQL中的两种临时表
MySQL中的两种临时表 伯乐在线2016-07-06 05:16:52阅读(4556)评论(3) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 ...
- 浏览器Range,Selection等选中文本对象
Range对象 Range 对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域. 最常见的Range是用户文本选择范围(user text selection).当用户选择了页面上的 ...
- OpenCV计算点到直线的距离 数学法
我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题. 点到直线距离代码如下: //== ...
- plist基本操作
重要概念:某些路径下“只能读,不能写”的原因 iPhone.ipad真机上 Resouces文件夹:是只读的,无法写入. document 和temp文件夹:可读,可写. 一.工程结构
- Reconstruction
/* Reconstruction */ /*@mixin border($position){ @if $position == left-right or $position == ...
- 几款极好的 JavaScript 文件上传插件
文件上传功能作为网页重要的组成部分,几乎无处不在,从简单的单个文件上传到复杂的批量上传.拖放上传,需要开发者花费大量的时间和精力去处理,以期实现好用的上传功能.这篇文章向大家推荐几款很棒的 JavaS ...
- select两个关联的下拉列表
今天用到两个关联的select,整理一下代码,仅供参考 如下: <html> <head> <meta charset="UTF-8"> < ...
- svn: Can't convert string from 'UTF-8' to native encoding 的解决办法(转)
http://www.cnblogs.com/xuxm2007/archive/2010/10/26/1861223.html svn 版本库中有文件是以中文字符命名的,在 Linux 下 check ...
- 日期控件,layui
<link rel="stylesheet" href="<%=path%>/layui/css/layui.css" type=" ...