• LINQ简记(2):重要概念


      

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

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

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

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

    1. // 执行  
    2. Debug.WriteLine(" 包含“t”的字符串有:");  
    3. foreach (string item in result)  
    4. {  
    5.     Debug.Write("  " + item);  
    6. }  

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

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

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

    1、数据源。

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

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

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

    3、执行查询。

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

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

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

    二、延迟执行。

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

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

    1. int[] newValues = resInt.ToArray();  

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

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

  • 相关阅读:
    Android SDK更新 Connection to http://dlssl.google.com refused 解决方法
    rsync服务架设(数据同步|文件增量备份)
    cocos2dx 环境搭建
    GMT、UTC、PDT 时间是什么?Linux下如何调整时区
    测试日志
    处理Oracle中杀不掉的锁
    熟悉常用的Linux操作
    综合练习:英文词频统计
    编译原理
    字符串、组合数据类型练习
  • 原文地址:https://www.cnblogs.com/xieweikai/p/6832835.html
Copyright © 2020-2023  润新知