今天突然好奇当linq进行循环遍历的时候,如果满足条件的时候还会不会继续循环剩余的数据,做了个小实验。

首先看看上代码

这个是测试的类

public class TestLinq
{
int _Number; public int Number
{
get
{
Console.WriteLine("读取Number" + _Number);//这里是为了测试看看是否读取了number值
return _Number;
}
set { _Number = value; }
}
}
首先看看直接使用linq遍历list是什么样的。
代码如下:
class Program
{
static void Main(string[] args)
{
List<TestLinq> lstTestLinq = new List<TestLinq>();
for (int i = ; i < ; i++)
{
lstTestLinq.Add(new TestLinq() { Number = i });
}
var test = from c in lstTestLinq where c.Number < select c;
Console.ReadKey();
}
}

效果如下:

没有看见Console.WriteLine任何值,这样可以看出如果仅仅是定义了linq代码,但是没有去使用的时候,这段linq代码是不会执行的

继续看代码:

 class Program
{
static void Main(string[] args)
{
List<TestLinq> lstTestLinq = new List<TestLinq>();
for (int i = ; i < ; i++)
{
lstTestLinq.Add(new TestLinq() { Number = i });
}
var test = from c in lstTestLinq where c.Number < select c;
test.ToList();
Console.ReadKey();
}
}

效果图:

我们看到linq读取了所有的数据,加了一句ToList后linq确确实实的执行了如果我换成了ToArray效果也和ToList()一样,如果我只想取一条数据,那么linq会遍历所有的么,继续看

class Program
{
static void Main(string[] args)
{
List<TestLinq> lstTestLinq = new List<TestLinq>();
for (int i = ; i < ; i++)
{
lstTestLinq.Add(new TestLinq() { Number = i });
}
var test = from c in lstTestLinq where c.Number < select c;
test.First();
Console.ReadKey();
}
}

效果如下

下面我们继First或FirstOrDefault方法会让linq执行,那么skip和take呢,继续试。

class Program
{
static void Main(string[] args)
{
List<TestLinq> lstTestLinq = new List<TestLinq>();
for (int i = ; i < ; i++)
{
lstTestLinq.Add(new TestLinq() { Number = i });
}
var test = from c in lstTestLinq where c.Number < select c;
test.Skip().Take(1);
Console.ReadKey();
}
}

效果图

发现也是没有执行

下面我们在看其他方法,比如 AsQueryable()和AsEnumerable()方法

效果也是一样

新人第一次写博客,深知新人的迷惑,下一篇我们看看EF操作数据库是不是真的如传说中的那么烂。

新人的QQ群165609857

Linq 那些事儿的更多相关文章

  1. MVC之前的那点事儿系列(7):WebActivator的实现原理详解

    文章内容 上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在Http ...

  2. 传说中的WCF(2):服务协定的那些事儿

    上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于 ...

  3. 关于Action返回结果类型的事儿(下)

    原文:关于Action返回结果类型的事儿(下) using System;  using System.Collections.Generic;  using System.Linq;  using ...

  4. Linq to Sql:N层应用中的查询(上) : 返回自定义实体

    原文:Linq to Sql:N层应用中的查询(上) : 返回自定义实体 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使 ...

  5. [转] 传说中的WCF(2):服务协定的那些事儿

    上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于 ...

  6. Docker+.Net Core 的那些事儿-2.创建Docker镜像

    1.从store.docker.com获取.net core镜像 docker pull microsoft/dotnet 2.创建一个.net core项目,并发布 在上篇文章结尾建立的工作目录下, ...

  7. C#中的依赖注入那些事儿

    目录 目录 1 IGame游戏公司的故事 1.1 讨论会 1.2 实习生小李的实现方法 1.3 架构师的建议 1.4 小李的小结 2 探究依赖注入 2.1 故事的启迪 2.2 正式定义依赖注入 3 依 ...

  8. Linq中DeferredLoadingEnabled,DataLoadOption的用法

    1.  基本的数据关系图 Student和Class之间是多对一关系,Student和Course之间是多对多关系. DataContext的DeferredLoadingEnabled属性指定是否需 ...

  9. linq深入

    一.匿名类:[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思,我匿了 在开发中,我们有时会像下面的代码一样声明一个匿名类:可以看出,在匿名类的语法中并没有为其命名,而是直接的一个ne ...

随机推荐

  1. Laravel中的日志与上传

    PHP中的框架众多,我自己就接触了好几个.大学那会啥也不懂啥也不会,拿了一个ThinkPHP学了.也许有好多人吐槽TP,但是个人感觉不能说哪个框架好,哪个框架不好,再不好的框架你能把源码读上一遍,框架 ...

  2. Oracle

    # Oracle 客户端免安装配置 1.  oracle11g   http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1511607 ...

  3. (3)WebApi客户端调用

    1.创建一个应用台控制程序,可以把Model的引用,用下面的方法拖拽上来(解决方案里没有这个文件,只是这个文件的引用)  2.Program.cs using System; using System ...

  4. Linux内核源代码获取教程

    Linux内核源代码获取方法 什么叫Linux 什么叫Linux内核 Linux内核源代码的获取 什么叫Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UN ...

  5. 网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  6. JS挂马攻防

    JS挂马攻防实录 攻现在最多见的JS挂马方法有两种,一种是直接将JavaScript脚本代码写在网页中,当访问者在浏览网页时,恶意的挂马脚本就会通过用户的浏览器悄悄地打开网马窗口,隐藏地运行(图1), ...

  7. 在Linux和Windows的Docker容器中运行ASP.NET Core

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...

  8. maven权威指南学习笔记(五)—— POM

    1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...

  9. 学习微信小程序之css7

    盒模型 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  10. UVA 12300 Smallest Regular Polygon(正多边形)

    题意:给出两点,求经过这两点的正n边形的最小面积 题解:这两点一定是最长的弦,我们设正多边形中点c,找到c到每个点的距离(都相同) 我们知道那个等腰三角形的底与每个角度就使用余弦定理 #include ...