LINQ 推迟查询的执行
LINQ 在运行期间定义查询表达式时、查询就不会运行。查询会在迭代数据项是运行,例如:
static void Main(string[] args)
{
List<string> list = new List<string>();
for (int i = ; i < ; i++)
{
list.Add(i.ToString());
}
var ls = from item in list where item.StartsWith("") select item;
Console.WriteLine("第一次输出:");
foreach (var item in ls)
{
Console.WriteLine(item);
}
Console.WriteLine();
for (int i = ; i < ; i++)
{
list.Add(i.ToString());
}
Console.WriteLine("第二次输出:"); foreach (var item in ls)
{
Console.WriteLine(item);
} Console.Read();
}
输出:

同时还必须注意,每次在迭代中使用查询时,都会调用扩展方法。在大多数情况下,这是非常有效的,
因为我们可以检测出源数据中的变化。但是在一些情况下,这是不可行的。调用扩展方法ToArray(),ToList()等
可以改变这个操作
static void Main(string[] args)
{
List<string> list = new List<string>();
for (int i = ; i < ; i++)
{
list.Add(i.ToString());
}
var ls = (from item in list where item.StartsWith("") select item).ToList();
Console.WriteLine("第一次输出:");
foreach (var item in ls)
{
Console.WriteLine(item);
}
Console.WriteLine();
for (int i = ; i < ; i++)
{
list.Add(i.ToString());
}
Console.WriteLine("第二次输出:"); foreach (var item in ls)
{
Console.WriteLine(item);
} Console.Read();
}

LINQ 推迟查询的执行的更多相关文章
- C# Linq 延迟查询的执行
在定义linq查询表达式时,查询是不会执行,查询会在迭代数据项时运行.它使用yield return 语句返回谓词为true的元素. var names = new List<string> ...
- LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
延迟执行的经典例子: 我们用 select ++i 就可以看到在foreach 时候,查询才被执行. public static void Linq99(){ int[] numbers = n ...
- LINQ标准查询操作符详解(转)
一. 关于LINQ LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders ...
- C#3.0新增功能09 LINQ 标准查询运算符 03 按执行方式的分类
连载目录 [已更新最新开发文章,点击查看详细] 标准查询运算符方法的 LINQ to Objects 实现主要通过两种方法之一执行:立即执行和延迟执行.使用延迟执行的查询运算符可以进一步分为两种 ...
- LINQ标准查询运算符的执行方式-延时之流式处理
linq的延时执行是指枚举时才去一个个生成结果元素. 流式处理是linq延时执行的一种,在生成元素前不需要获取所有源元素,只要获取到的源元素足够计算时,便生成结果元素. 流式处理的标准查询运算符返回值 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- C#3.0新增功能09 LINQ 标准查询运算符 04 运算
连载目录 [已更新最新开发文章,点击查看详细] 本篇主要介绍标准查询运算符的常用运算功能. 01 对数据排序 排序操作基于一个或多个属性对序列的元素进行排序. 第一个排序条件对元素执行主要排序. ...
- C# LINQ学习笔记二:LINQ标准查询操作概述
本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5801249.html,记录一下学习过程以备后续查用. “标准查询运算符”是组成语言集成查询 (LINQ) 模式 ...
- IEnumerable和IQueryable和Linq的查询
IEnumerable和IEnumerable 1.IEnumerable查询必须在本地执行.并且执行查询前我们必须把所有的数据加载到本地.而且更多的时候.加载的数据有大量的数据是我们不需要的无效数据 ...
随机推荐
- matlab画二维直方图以及双y轴坐标如何修改另一边y轴的颜色
1.首先讲一下如何用hist画二维直方图 x=[- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- C++ - C++简介
一.C与C++ 一般来说,计算机要处理两个概念--算法和数据.C在面世时是过程性的语言,过程性的语言指的是程序的过程较比其他语言,会更加的有序可读(清晰性和可读性).因为它把程序分解成各个分支,并执行 ...
- Qt第三方库----QCustomPlot
一.软件下载 下载地址:http://www.qcustomplot.com/index.php/download 这里推荐下载第一个链接的内容: 注:这里的第三方库要放在非中文目录下. 二.配置 ( ...
- 数据:ContentResolver类
ContentResolver是通过URI来查询ContentProvider中提供的数据.除了URI以 外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型. 如果你需要获取一个特定的记 ...
- [BZOJ4804]欧拉心算:线性筛+莫比乌斯反演
分析 关于这道题套路到不能再套路了没什么好说的,其实发这篇博客的目的只是为了贴一个线性筛的模板. 代码 #include <bits/stdc++.h> #define rin(i,a,b ...
- postman抓包
三个问题: 如何安装? 基本了解? 如何使用? 一.安装方法: 包括离线端安装和chrome插件安装,我用chrome插件安装成功 postman安装及使用 打开Chrome,依次选择“选项”> ...
- Android MQTT的发布与订阅
一.MQTT介绍 链接1(菜鸟教程):https://www.runoob.com/w3cnote/mqtt-intro.html 连接2(MQTT中文网):http://mqtt.p2hp.com/ ...
- Yahoo 军规(部分)
1.尽量减少HTTP的请求次数 网站中的图片,文字,样式表等内容都是从服务器端请求过来的.如果项目中有多个脚本,多个样式表需要加载,尽量将他们合并在一个CSS.JS文件中. 2.将CSS放在页面最上 ...
- 尚硅谷Docker---6-10、docker的安装
尚硅谷Docker---6-10.docker的安装 一.总结 一句话总结: docker的安装使用非常简单,安装的话yum安装epel和docker,使用的话就是docker run命令 1.doc ...
- Oracle JET 使用RequireJS第三方工具或库引入
在 Oracle JET 应用程序中使用 RequireJS 添加第三方工具或库. 步骤: 1.如果使用工具框架脚手架,需要一下操作. a.使用 npm 安装你需要的库. npm install my ...