• C#学习第六弹之LINQ


    关于查询:

    查询是一种从数据源检索数据的表达式。 查询通常用专门的查询语言来表示。 随着时间的推移,人们已经为各种数据源开发了不同的语言;例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。 因此,开发人员不得不针对他们必须支持的每种数据源或数据格式而学习新的查询语言。 LINQ 通过提供一种跨各种数据源和数据格式使用数据的一致模型,简化了这一情况。 在 LINQ 查询中,始终会用到对象。 可以使用相同的基本编码模式来查询和转换 XML 文档、SQL 数据库、ADO.NET 数据集、.NET 集合中的数据以及对其有 LINQ 提供程序可用的任何其他格式的数据。

    所有 LINQ 查询操作都由以下三个不同的操作组成:

    1.获取数据源

    2.创建查询

    3.执行查询

    LINQ在需要调用查询的时候才会真正的执行,以下是几个简单的例子:

     1 using System;
     2 using System.Linq;
     3 
     4 class Test
     5 {        
     6     static void Main()
     7     {
     8         //数据源
     9         int[] numbers = new int[7]{ 0, 1, 2, 3, 4, 5, 6 };
    10 
    11         //创建查询,查询实际上还未执行
    12         var query =
    13             from num in numbers
    14             where (num % 2) == 0
    15             select num;
    16 
    17         //执行查询
    18         foreach (int num in query)
    19         {
    20             Console.WriteLine("{0}", num);
    21         }
    22     }
    23 }

    结果:

    LINQ的语法和SQL比较像。

     1 using System;
     2 using System.Linq;
     3 
     4 class Test
     5 {        
     6     static void Main()
     7     {
     8         //数据源
     9         int[] numbers = new int[7]{ 0, 1, 2, 3, 4, 5, 6 };
    10 
    11         //创建查询,查询实际上还未执行
    12         var query =
    13             from num in numbers
    14             where (num % 2) == 0
    15             select num;
    16 
    17         numbers[0] = 10;
    18         numbers[1] = 8;
    19 
    20         //执行查询
    21         foreach (int num in query)
    22         {
    23             Console.WriteLine("{0}", num);
    24         }
    25     }
    26 }

    结果:

    可以看出LINQ的特点,即真正调用查询的时候,查询才会被执行。

    上图:

    若要强制立即执行任意查询并缓存其结果,可以调用 ToList<TSource> 或 ToArray<TSource> 方法。

     1 using System;
     2 using System.Linq;
     3 using System.Collections.Generic;
     4 
     5 class Test
     6 {        
     7     static void Main()
     8     {
     9         int[] numbers = new int[7]{ 0, 1, 2, 3, 4, 5, 6 };
    10 
    11         List<int> query =
    12              (from num in numbers
    13               where (num % 2) == 0
    14               select num).ToList();
    15 
    16         numbers[0] = 10;
    17         numbers[1] = 8;
    18 
    19         foreach (int num in query)
    20         {
    21             Console.WriteLine("{0}", num);
    22         }
    23     }
    24 }

    结果:

  • 相关阅读:
    Asp.net 动态添加Meta标签
    【转】在SharePoint Server 2010中更改“我的网站”
    SPQuery DateTime 类型查询
    Asp.net Web Application 打开 SharePoint 2010 Site 错误 The Web application at could not be found
    How To Create SharePoint 2010 Site Collection In Its Own DB
    C# 文件打印
    面试题 java集合
    《深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读
    《深入理解Java虚拟机》(五)JVM调优
    《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4461083.html
Copyright © 2020-2023  润新知