博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ简记(2):重要概念
阅读量:6816 次
发布时间:2019-06-26

本文共 1376 字,大约阅读时间需要 4 分钟。

 
为了能让初学者更快速地掌握,在系列文章中,我尽可能地避开理论讲解,一则对于入门者来说,过多的理论叙述反而会降低大家学习编程的兴趣,二则,官方文档的资料很详细,我说了也是废话。因此,我会尽可能地多举些简单的例子,让初学者能够看得懂,呵呵,当然了,学习LINQ,还得有一定C#语法基础。
上一篇文章中我们讨论了最简单的LINQ语法,也是最基本的语法和表达式编写结构,本文我们就来谈一谈几个重要的概念。
 
一、查询三步曲。
创建和使用LINQ,有三个必备的步骤:
1、Get——数据从哪里来?得到数据源;
2、Create——创建查询表达式,这是核心;
3、Execute——执行查询,并得到相应结果。
 
好的,我们下面按照这三步来做一个练习。
1、数据源,可以来自于数据库,XML,这里我们手动创建一个数组。
 
string[] arrSource = new string[] { "turn", "sou", "tao", "mar", "ate", "leee", "data", "em" };

2、创建查询,我们来写一个LINQ表达式,把上面字符串数组中包含字母“t ”的都筛选出来。

IEnumerable<string> result = from s in arrSource where s.Contains("t") select s;

3、执行查询,把结果输出到“输出窗口”中。

// 执行 Debug.WriteLine("\n包含“t”的字符串有:"); foreach (string item in result) { Debug.Write(" " + item); }

运行一下程序,你会看到以下结果。

包含“t”的字符串有: turn tao ate data

呵呵,怎么样?找到感觉了没?不要紧张,再练一个。

1、数据源。

int[] mySource = new int[] { 26, 38, 17, 21, 55, 88, 120, 107, 67, 18, 29, 30 };

2、创建查询。把里面的偶数筛选出来。

IEnumerable<int> resInt = from n in mySource where n % 2 == 0 select n;

3、执行查询。

Debug.WriteLine("数组中是偶数的:"); foreach (int nn in resInt) { Debug.Write(" " + nn.ToString()); }

最终,我们得到以下结果。

数组中是偶数的: 26 38 88 120 18 30

二、延迟执行。

你一定会问,LINQ表达式是在什么时候执行呢?在声明查询变量时,还是在foreach循环中?好,我们一起来探索一下。

LINQ一般是延迟执行,也就是说,到了foreach的时候才被执行,如果要强制执行,可以调用ToArray等方法,如。

int[] newValues = resInt.ToArray();

这个,很难通过断点调试去证实,因为当你在单步跟入时,为了预览结果视图,VS已经提前执行了。因此,这个概念我们参阅一下MSDN就可以了,也不属于很重要的内容,重要的我们知道怎么用它。

 

下面这张图片来自微软官方文档,它展示了LINQ的整个执行过程。

转载地址:http://zebzl.baihongyu.com/

你可能感兴趣的文章
怎么能看透信封
查看>>
css正方形照片墙
查看>>
找工作的程序员必懂的Linux
查看>>
shell脚本实现杨辉三角形
查看>>
ComponentOne 2019V1火热来袭!全面支持 Visual Studio 2019
查看>>
装了一款系统优化工具,如何从Mac上卸载MacBooster 7?
查看>>
使用符号表调试release程序
查看>>
Delphi 设置系统默认打印机
查看>>
AliOS Things网络适配框架 - SAL
查看>>
数组 将一个数组的元素和另一个素组的元素相加,然后赋给第三个数组
查看>>
Python常用模块汇总
查看>>
sa提开放系统下的虚拟新贵Virtualbox权技巧之xp_regwrite替换sethc.exe
查看>>
SpringBoot开发案例之整合Dubbo提供者(一)
查看>>
变态的程序
查看>>
腾讯抄你肿么办 ?
查看>>
java多线程的Fork/Join
查看>>
ftp 服务器的配置
查看>>
JavaScript的浏览器兼容性问题小结。
查看>>
Oracle Hint的用法
查看>>
Postfix邮件系统
查看>>