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

实例1

 int[] numbers = new[] { , , , , , , , , ,  };

 //传统下的子查询做法
//var query = from num in numbers
// select num * (from n in numbers
// where n % 2 == 0
// select n).Count(); //使用LET关键字的做法
var query = from num in numbers
let evenNumbers = from n in numbers
where n % ==
select n
select num * evenNumbers.Count(); foreach (var item in query)
{
Console.WriteLine(item);
}

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

实例2

 string[] strings = { "A penny saved is a penny earned.", "The aaxly sdj", "the pa is no" };

 var query = from sentence in strings
let words = sentence.Split(' ')//用空格分割成数组
from word in words
let w = word.ToLower()//把每个字母小写
where w[] == 'a' || w[] == 'e'
select word; foreach (var s in query)
{
Console.WriteLine(s);
}

运行结果:

实例3

 List<Person> persons = new List<Person>
{
new Person { ID = "", Name = "张三" ,Gender = "男" , Age = },
new Person { ID = "", Name = "李四" ,Gender = "女" , Age = },
new Person { ID = "", Name = "王五" ,Gender = "女" , Age = },
new Person { ID = "", Name = "赵六" ,Gender = "男", Age = }
};
var query = from p in persons
let friendlyName = p.Gender == "男" ? "Mr" + p.Name : "Ms" + p.Name
select new
{
UserID = p.ID,
FriendName = friendlyName
};
foreach (var item in query)
{
Console.WriteLine("No:{0},Friendly Name:{1}", item.UserID, item.FriendName);
}

运行结果:

实例4

 List<Person> persons = new List<Person>
{
new Person { ID = "", Name = "张三" ,Gender = "男" , Age = },
new Person { ID = "", Name = "李四" ,Gender = "女" , Age = },
new Person { ID = "", Name = "王五" ,Gender = "女" , Age = },
new Person { ID = "", Name = "赵六" ,Gender = "男", Age = }
}; var query = from p in persons
let gender = p.Gender
let age = p.Age
where age > && gender == "女"
select p;
foreach (var item in query)
{
Console.WriteLine("姓名: " + item.Name + " 年龄:" + item.Age);
}

运行结果:

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. yaf nginx 设置

    #test1server { listen 80; listen [::]:80; root /vagrant_data/aaa/public; index index.html index.htm ...

  2. Nginx安装详细指南

    nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境.  gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有g ...

  3. How to Install Tomcat 8.0.27 on CentOS/RHEL and Ubuntu【转】

    https://tecadmin.net/install-tomcat-8-on-centos-rhel-and-ubuntu/ Apache Tomcat is an opensource web ...

  4. python------面向对象进阶反射详解(重点)

    一.反射 通过字符串映射或者修改程序运行时的状态,属性,或者方法. 1.getattr(object,name,default=None) 2.hasattr(object,name) 3.setat ...

  5. 阿里java开发规范 强制约束

    http://news.51cto.com/art/201901/591018.htm  :阿里开发强制要求的11条索引创建规范,提高性能 https://blog.csdn.net/Lujunwei ...

  6. PythonStudy——函数的导入 Import of functions

    # 函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数# 难点:如何定义个函数 # 现实中很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名# = ...

  7. DataTable的详细用法

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  8. [转]使用Cython来保护Python代码库

    转自:http://blog.csdn.net/chenyulancn/article/details/77168621 最近,我在做一个需要使用Cython来保护整个代码库的Python项目. 起初 ...

  9. Python变量以及类型

    变量的定义 在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢? 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账 ...

  10. Android中是否推荐使用枚举Enum

    一.Enum的产生 Java1.5中引入了枚举的语法,包括Enum,EnumSet,EnumMap等.其中Enum就是我们在C或C++中见过的枚举类型,但是Java中的枚举又比C或C++中的枚举更成熟 ...