Linq 那些事儿
今天突然好奇当linq进行循环遍历的时候,如果满足条件的时候还会不会继续循环剩余的数据,做了个小实验。
首先看看上代码
这个是测试的类 public class TestLinq
{
int _Number; public int Number
{
get
{
Console.WriteLine("读取Number" + _Number);//这里是为了测试看看是否读取了number值
return _Number;
}
set { _Number = value; }
}
}
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 那些事儿的更多相关文章
- MVC之前的那点事儿系列(7):WebActivator的实现原理详解
文章内容 上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在Http ...
- 传说中的WCF(2):服务协定的那些事儿
上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于 ...
- 关于Action返回结果类型的事儿(下)
原文:关于Action返回结果类型的事儿(下) using System; using System.Collections.Generic; using System.Linq; using ...
- Linq to Sql:N层应用中的查询(上) : 返回自定义实体
原文:Linq to Sql:N层应用中的查询(上) : 返回自定义实体 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使 ...
- [转] 传说中的WCF(2):服务协定的那些事儿
上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于 ...
- Docker+.Net Core 的那些事儿-2.创建Docker镜像
1.从store.docker.com获取.net core镜像 docker pull microsoft/dotnet 2.创建一个.net core项目,并发布 在上篇文章结尾建立的工作目录下, ...
- C#中的依赖注入那些事儿
目录 目录 1 IGame游戏公司的故事 1.1 讨论会 1.2 实习生小李的实现方法 1.3 架构师的建议 1.4 小李的小结 2 探究依赖注入 2.1 故事的启迪 2.2 正式定义依赖注入 3 依 ...
- Linq中DeferredLoadingEnabled,DataLoadOption的用法
1. 基本的数据关系图 Student和Class之间是多对一关系,Student和Course之间是多对多关系. DataContext的DeferredLoadingEnabled属性指定是否需 ...
- linq深入
一.匿名类:[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思,我匿了 在开发中,我们有时会像下面的代码一样声明一个匿名类:可以看出,在匿名类的语法中并没有为其命名,而是直接的一个ne ...
随机推荐
- CSS中定义CLASS时,中间有空格和没空格的区别是什么?
.example .pp{ color: orange; } .example.pp2 { color: green; }如上面的两个定义一个是中间有空格,一个是中间没空格. 第一个class要这样写 ...
- H5(三)
Canvas(画布) 基本内容 简单来说,HTML5提供的新元素<canvas> Canvas在HTML页面提供画布的功能 在画布中绘制各种图形 C ...
- Delphi的分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同
转载自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool 我估摸着内存分配+释放是个基础的函数,有些人可能没注意此类函数或细 ...
- PHPExcel 大数据的导出
PHPExcel 是一个php语言读取导出数据.导入生成Excel的类库,使用起来非常方便,但有时会遇到以些问题,比如导出的数据超时,内存溢出等. 下面我们来说说这些问题和解决办法. PHPExcel ...
- make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl] 错误 1,make: *** [out/host/linux-x86/obj/lib/libESR_Portable.so] 错误 1
错误3: g++: g++: selected multilib '32' not installed selected multilib '32' not installed make: *** [ ...
- ZooKeerper学习之Watcher
ZooKeeper为我们提供了用于监视结点变化的Watcher机方法制: 1.可以注册Watcher的方法:getData().exists().getChildren().我们可以通过查看ZooKe ...
- 解决scrollview和viewpager冲突
import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; i ...
- Xcode显示出错
warning: control reaches end of non-void function 表示有返回值的函数没有return.
- jquery函数理解与运用
javascript中有多种不用的方式去理解函数,函数类似于我们以前学过的数学函数,但是在程序设计中,我是按照下面的方式进行理解: 函数的理解: 函数是一个代码块,内容被包含在函数内,通常我们是把一些 ...
- orcal 操作
清空表数据(不清除表结构): truncate table 表名