【已更新最新开发文章,点击查看详细】

LINQ 提供程序可用的任何其他格式的数据。

查询操作的三个部分

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

  1. 获取数据源。

  2. 创建查询。

  3. 执行查询。

本主题的其余部分也会引用此示例。

class IntroToLINQ
{        
    static void Main()
    {   // 1. 数据源
        int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

        // 2. 查询表达式 numQuery 是 IEnumerable<int> 类型
        var numQuery =
            from num in numbers
            where (num % 2) == 0
            select num;

        // 3. 执行查询
        foreach (int num in numQuery)
        {
            Console.Write("{0,1} ", num);
        }
    }
}

LINQ 中,查询的执行与查询本身截然不同;换句话说,如果只是创建查询变量,则不会检索任何数据。

C#3.0新增功能09 LINQ  基础02 LINQ 查询简介

数据源

IQueryable<T>)的类型称为可查询类型。

XElement 类型中:

// using System.Xml.Linq;
XElement contacts = XElement.Load(@"c:\myContactList.xml");// 从 xml 文件创建数据源

IEnumerable<T>。

Northwnd db = new Northwnd(@"c:\northwnd.mdf");  
  
// 查询城市名称为 London 的客户  
IQueryable<Customer> custQuery =  
    from cust in db.Customers  
    where cust.City == "London"  
    select cust;

IEnumerable<T> 接口或从中继承的接口的任意对象。

支持非泛型 IEnumerable 接口的类型(如 ArrayList)还可用作 LINQ 数据源。 有关详细信息,请参阅如何:使用 LINQ 查询 ArrayList (C#)

查询

为使编写查询的工作变得更加容易,C# 引入了新的查询语法。

标准查询运算符概述 (C#)。

还可以使用方法语法来表示查询。 有关详细信息,请参阅 LINQ 中的查询语法和方法语法

查询执行

延迟执行

此概念称为延迟执行,下面的示例对此进行了演示:

// 执行查询 
foreach (int num in numQuery)
{
    Console.Write("{0,1} ", num);
}

例如,在上一个查询中,迭代变量 num 保存了返回的序列中的每个值(一次保存一个值)。

在应用程序中,可以创建一个检索最新数据的查询,并可以按某一时间间隔反复执行该查询以便每次检索不同的结果。

强制立即执行

下面的查询返回源数组中偶数的计数:

var evenNumQuery = 
    from num in numbers
    where (num % 2) == 0
    select num;

int evenNumCount = evenNumQuery.Count();

要强制立即执行任何查询并缓存其结果,可调用 ToList 或 ToArray 方法。

List<int> numQuery2 =
    (from num in numbers
     where (num % 2) == 0
     select num).ToList();


var numQuery3 =
    (from num in numbers
     where (num % 2) == 0
     select num).ToArray();

但是,通过调用 ToList 或 ToArray,也可以将所有数据缓存在单个集合对象中。

其他技术请参考

 

【已更新最新开发文章,点击查看详细】

相关文章:

  • 2021-06-13
  • 2022-01-08
  • 2022-01-07
  • 2021-05-27
  • 2021-05-20
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-25
  • 2022-01-18
  • 2021-05-25
  • 2021-05-29
  • 2021-09-11
  • 2021-12-19
  • 2022-01-11
相关资源
相似解决方案