C#中的Where和Lambda表达式

时间:2022-05-04 21:24:08
1
2
3
4
5
6
7
8
9
10
11
List<string> listString = new List<string>();
listString.Add("abc");
listString.Add("456");
listString.Add("bbb");
listString.Add("iiiiiiii");
 
var retList = listString.Where(u => u.Length > 4);
foreach (string str in retList)
{
    Console.WriteLine("str = {0}", str);
}

之前当看到c#里有Where的时候,总是不明觉厉,也影响了阅读代码的流畅性。

这里的Where是Linq的一种查询语法,而u => u.Length > 4则是一个lambda正则表达式。

Where语法格式:

public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)

lambda正则表达式:

表达式位于=>运算符的右侧  (input parameters)=>expression。实际上是一个匿名委托。比如:

1
2
3
4
5
6
7
8
9
delegate int add(int i);
static void Main(string[] args)
{
    add myDelegate = x => x + 5;
    int ret = myDelegate(5);
    Console.WriteLine("ret = {0}", ret);
             
    Console.ReadLine();
}

文章开头代码中listString.Where(u => u.Length > 4);里面的u => u.Length > 4实际上就是一个匿名委托,用这个匿名委托去过滤Source里面的每一个元素,剩下的返回IEnumerable<TSource>。

原文转自:http://www.cnblogs.com/chunyih/p/3859453.html
原作者为 chunyih。请尊重原作者版权

C#中的Where和Lambda表达式的更多相关文章

  1. Android Stutio中使用java8的Lambda表达式

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51532028 本文出自:[openXu的博客] 目录: 为什么要使用Lambda表达式 让A ...

  2. C&num; 中使用Linq和Lambda表达式对List&lt&semi;T&gt&semi;进行排序

    C#中List<T>排序的两种方法 List<Student> stu = (List<Student>)Session["StudentList&quo ...

  3. Qt中使用匿名函数lambda表达式

    一.为什么要使用匿名函数lamdba 首先,lambda表达式可以使代码变得简单,C++中,一个lambda表达式表示一个可调用的代码单元.如代码: #include <QCoreApplica ...

  4. 在Android中引入Java8的lambda表达式

    我用的是retrolambda这个插件,下面来说下如何添加它. 项目地址:https://github.com/evant/gradle-retrolambda 在根项目的build.gradle中添 ...

  5. C&num;中匿名委托以及Lambda表达式的学习笔记

    一. C#从1.0到4.0, 随着Linq,泛型的支持,代码越来越简单优雅 , , , , , , , , , }; IEnumerable< select n; newNums = newNu ...

  6. Java语言与JVM中的Lambda表达式全解

    Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...

  7. java 8 中lambda表达式学习

    转自 http://blog.csdn.net/renfufei/article/details/24600507 http://www.jdon.com/idea/java/10-example-o ...

  8. Java中Lambda表达式的使用

    简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要乱用,因 ...

  9. Java中Lambda表达式的使用(转)

    https://www.cnblogs.com/franson-2016/p/5593080.html 简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖" ...

随机推荐

  1. spring-cloud-event-sourcing-example-master 运行效果及说明

    1.微服务架构下电商示例,部署成功!监控等技术细节未深入研究.      简单介绍:             配置服务(config-service ),端口8888,健康检查 xx:8888/hea ...

  2. 搭建 SubversionEdge for VS

    1. 需要软件 SubversionEdge , AnkhSvn,TortoiseSVN: 2. 安装3个软件,一路Next 3. 安装完SubversionEdge 后,会打开一个网页http:// ...

  3. Qt修改xml文件

    <taskpackage styleId="styles/2dc70235-e48b-4e11-b074-3c3f773ae1f3" id="3333" ...

  4. CPU的频率、外频、倍频与超频

    如,现有一CPU:Intel Core 2 Duo E8400,其频率是3.0GHz: CPU的外频指的是CPU与外部组件进行数据传输/运算时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者 ...

  5. JSP图片上传 公共工具类

    需要jsmartcom_zh_CN.jar支持. 下载地址: http://files.cnblogs.com/simpledev/jsmartcom_zh_CN.rar <%@page imp ...

  6. Python dict operation introduce

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: d = ...

  7. cactiez v11添加对mysql数据库、apache系统进行监控

    cactiez默认已经安装了mysql监控的模板,需要我们对服务器端和被监控的mysql客户端进行配置才能生效. 被监控的Mysql客户端: 如cactiez的IP为192.168.0.8 #添加一个 ...

  8. 冲刺Two之站立会议8

    今天对软件进行了用户试用,找了一些同学让他们试用软件之后对软件给出了建议,这样我们可以在一定程度上对它进行进一步地优化.

  9. 浅谈跨平台框架 Flutter 的优势与结构

    作者:个推iOS工程师 伊泽瑞尔 一.背景 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平台上,使用平台所支持的开发工具和语言,直接调用系统提供的API所开发 ...

  10. 【LOJ】&num;6435&period; 「PKUSC2018」星际穿越

    题解 想出70的大众分之后就弃疗了,正解有点神仙 就是首先有个比较显然的结论,就是要么是一直往左走,要么是走一步右边,然后一直往左走 根据这个可以结合RMQ写个70分的暴力 我们就考虑,最优的话显然是 ...