let子句用于在LINQ表达式中存储子表达式的计算结果。let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它。
此范围变量可以再后续的LINQ子句中使用。

实例1

  1. int[] numbers = new[] { , , , , , , , , , };
  2.  
  3. //传统下的子查询做法
  4. //var query = from num in numbers
  5. // select num * (from n in numbers
  6. // where n % 2 == 0
  7. // select n).Count();
  8.  
  9. //使用LET关键字的做法
  10. var query = from num in numbers
  11. let evenNumbers = from n in numbers
  12. where n % ==
  13. select n
  14. select num * evenNumbers.Count();
  15.  
  16. foreach (var item in query)
  17. {
  18. Console.WriteLine(item);
  19. }

运行结果:0 5 10 15 20 25 30 35 40 45

实例2

  1. string[] strings = { "A penny saved is a penny earned.", "The aaxly sdj", "the pa is no" };
  2.  
  3. var query = from sentence in strings
  4. let words = sentence.Split(' ')//用空格分割成数组
  5. from word in words
  6. let w = word.ToLower()//把每个字母小写
  7. where w[] == 'a' || w[] == 'e'
  8. select word;
  9.  
  10. foreach (var s in query)
  11. {
  12. Console.WriteLine(s);
  13. }

运行结果:

实例3

  1. List<Person> persons = new List<Person>
  2. {
  3. new Person { ID = "", Name = "张三" ,Gender = "男" , Age = },
  4. new Person { ID = "", Name = "李四" ,Gender = "女" , Age = },
  5. new Person { ID = "", Name = "王五" ,Gender = "女" , Age = },
  6. new Person { ID = "", Name = "赵六" ,Gender = "男", Age = }
  7. };
  8. var query = from p in persons
  9. let friendlyName = p.Gender == "男" ? "Mr" + p.Name : "Ms" + p.Name
  10. select new
  11. {
  12. UserID = p.ID,
  13. FriendName = friendlyName
  14. };
  15. foreach (var item in query)
  16. {
  17. Console.WriteLine("No:{0},Friendly Name:{1}", item.UserID, item.FriendName);
  18. }

运行结果:

实例4

  1. List<Person> persons = new List<Person>
  2. {
  3. new Person { ID = "", Name = "张三" ,Gender = "男" , Age = },
  4. new Person { ID = "", Name = "李四" ,Gender = "女" , Age = },
  5. new Person { ID = "", Name = "王五" ,Gender = "女" , Age = },
  6. new Person { ID = "", Name = "赵六" ,Gender = "男", Age = }
  7. };
  8.  
  9. var query = from p in persons
  10. let gender = p.Gender
  11. let age = p.Age
  12. where age > && gender == "女"
  13. select p;
  14. foreach (var item in query)
  15. {
  16. Console.WriteLine("姓名: " + item.Name + " 年龄:" + item.Age);
  17. }

运行结果:

LINQ之let关键字的更多相关文章

  1. linq中let关键字学习

    linq中let关键字就是对子查询的一个别名,let子句用于在查询中添加一个新的局部变量,使其在后面的查询中可见. linq中let关键字实例 1.传统下的子查询与LET关键字的区别     C# 代 ...

  2. Linq之常见关键字

    目录 写在前面 系列文章 常见关键字 总结 写在前面 前面的几篇文章算是对linq的铺垫,从本篇开始将进行linq的语法及实践. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda ...

  3. Linq学习笔记(转)

    开始Linq前你要知道的 扩展方法 顾名思义就是对现有类进行扩展的的方法,扩展方法可以在不修改现有类的情况下,为现有类增加公共的接口(不是C#中的interface). 扩展方法本质上是一个静态方法, ...

  4. linq入门系列导航

    写在前面 为什么突然想起来学学linq呢?还是源于在跟一个同事聊天的时候,说到他们正在弄得一个项目,在里面用到了linq to sql.突然想到距上次使用linq to sql是三年前的事情了.下班回 ...

  5. Linq之Linq to Sql

    目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍l ...

  6. Linq之Linq to XML

    目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...

  7. Linq之Linq to Objects

    目录 写在前面 系列文章 linq to objects 总结 写在前面 上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml ...

  8. Linq之延迟加载特性

    目录 写在前面 系列文章 延迟加载 总结 写在前面 上篇文章介绍了linq中常见的几个关键字,并列举了几个例子,算是对linq如何使用有了初步了解.上篇文章中也提到了,能够使用linq的场合有一个要求 ...

  9. (转)Linq学习笔记

    写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...

随机推荐

  1. Python之小练习

    1.1 2 3 4 5 6 7 8能组成多少个不同的两位数? count = 0for i in range(1,9): for V in range(1,9): if i != V: count+= ...

  2. Windows 下 安装 laravel(一些小笔记)

    首先 安装完composer       下载地址    https://getcomposer.org/ 在  cmd  进入到  自己的项目访问目录 然后  输入命令:composer creat ...

  3. ab压力测试nginx

    centos7系统: yum install httpd-tools -y #安装ab压力测试工具

  4. websocket 11

    1. websocket 回顾: - 什么是轮训? - 通过定时器让程序每隔n秒执行一次操作. - 什么是长轮训? - 浏览器向后端发起请求,后端会将请求 hang 住,最多hang 30s. 如果一 ...

  5. oracle-组件vault

    ===================== lsnrctl stopshutdown immediate;emctl stop dbconsolecd $ORACLE_HOME/rdbms/libma ...

  6. 3.2-1937 Problem D

    #include <stdio.h> ; }; }; int main(void) { int n; while(scanf("%d", &n) != EOF) ...

  7. prettier-eslint 与 prettier-eslint-cli 区别

    prettier-eslint 与 prettier-eslint-cli 区别: prettier-eslint 只能处理字符串 prettier-eslint-cli 能处理一个或多个文件 默认情 ...

  8. Http协议基础及发展历史

    一.网络分层协议 经典五层模型 1.物理层:(电脑的硬件,网卡端口,网线,网线连出去的光缆) 定义物理设备如何传输数据 2.数据链路层 在通信的实体间建立数据链路连接. 两台机器物理上是可以连接在一起 ...

  9. AR外包,就找北京动点软件,长年承接AR外包(案例丰富可签合同,内附案例演示)

    北京团队长年承接AR项目外包 咨询QQ:372900288  微信:liuxiang0884 以下是AR项目案例演示,索取更多案例请通过以上方式在线联系我们

  10. caffe-windows环境配置(github上官方BVLC/caffe的推荐配置方法详解)

    [转载来的文章:如有侵权,请联系我!我将马上删除!] 首先声明一下,如标题,本教程是caffe在windows系统上的配置方法,而且是github上官方BVLC/caffe目前推荐的配置方法,并不是使 ...