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. 解决eclipse高版本JDK编译的项目到低版本JDK服务器上不能运行的问题

    错误提示信息:Unsupported major.minor version 52.0,意思是说,当前jdk的版本不支持更高版本jdk编译出来的class文件. 我的编译环境,eclipse使用的是j ...

  2. webpack的知识内容

    webpack的构建工具: 浏览器的兼容性? 转换ES6语法: 转化JSX: css

  3. ubuntu yolov2 训练自己的数据集

    项目需求+锻炼自己,尝试用yolov2跑自己的数据集,中间遇到了很多问题,记下来防止忘记 一.数据集 首先发现由于物体特殊没有合适的现成的数据集使用,所以只好自己标注,为了减少工作量,先用opencv ...

  4. for break

    public static void main(String[] args) { aaa: for (int j = 0; j < 2; j++) { System.out.println(&q ...

  5. spring redis 注解实现缓存机制

    1.xml配置 <bean id="poolConfigTax" class="redis.clients.jedis.JedisPoolConfig"& ...

  6. PythonStudy——Python 内存池机制 (Memory pool mechanism) Pymalloc

    Python是如何进行内存管理-内存池机制 Pymalloc Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),用于对小块内存的申请和释 ...

  7. Object.is()

  8. mysql下载以及安装

    因为xampp怎么都连接不上mysql,我感觉有可能是因为装mysql的时候试了很多次才安装成功,之前的mysql没有卸载干净造成的,今天把mysql卸载干净,又重新安装配置环境,但是还是连接不上,然 ...

  9. Windows配置ffmpeg

    一.ffmpeg简介 ffmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案. 支持操作系统: ...

  10. vscode, cmake编译多个C++文件

    目的是利用vscode及相关插件编译多个C++文件. 我已经装好cmake和mingw并且将它们的路径添加到系统变量path中了. vscode装上如下几个插件: 点击vscode左上角   文件-& ...