zoukankan      html  css  js  c++  java
  • 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 }

    结果:

  • 相关阅读:
    16年青岛网络赛 1001 I Count Two Three
    最短路算法--模板
    POJ 1511 Invitation Cards (spfa的邻接表)
    POJ 2240 Arbitrage
    POJ 1502 MPI Maelstrom
    POJ 1860 Currency Exchange (最短路)
    最短路径--SPFA 算法
    POJ 3660 Cow Contest
    POJ 3259 Wormholes (Bellman_ford算法)
    POJ 3268 Silver Cow Party (双向dijkstra)
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4461083.html
Copyright © 2011-2022 走看看