📜  LINQ中的查询是什么?

📅  最后修改于: 2021-05-29 18:45:54             🧑  作者: Mango

查询是用于从数据源恢复数据的表达式。通常,查询用某种专门的语言表示。开发了不同类型的语言来访问不同类型的数据源,例如用于关系数据库的SQL,用于XML的XQuery等。因此,每次开发人员需要为不同类型的数据源学习不同类型的语言时,这种情况导致开发人员开发一种语言,通过这种语言,他们可以在一种语言的帮助下访问任何类型的数据源。
因此,LINQ查询可以满足此要求,使用LINQ查询,您可以访问LINQ提供程序提供的任何类型的数据源,例如XML文档,SQL数据库,ADO.NET数据集等。在LINQ查询中,查询始终将结果作为对象返回,这使您可以对结果使用面向对象的方法,而不必担心将不同的数据格式转换为对象。

例子:

// C# program to demonstarte the 
// Simple query example
using System;
using System.Linq;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating data source
        string[] language = {"C#", "VB", "Java", "C++", 
                        "C", "Perl", "Ruby", "Python"};
  
        // Creating a query to get the 
        // value from the data source
        var result = from lang in language
                     where lang.Contains('C')
                     select lang;
  
        // display the result of the query
        foreach(var l in result)
        {
            Console.WriteLine(l);
        }
    }
}

输出:

C#
C++
C

在上面的示例中,LINQ查询包含三个不同的操作

  1. 获取数据源:在上面的示例中,数据源是一个数组。
    string[]language = {"C#", "VB", "Java", "C++", "C", "Perl", "Ruby", "Python"};

    隐式支持通用IEnumerable 接口。在LINQ查询中,这是一个基本规则,即任何对象的数据源都必须支持IEnumerable 接口或从IEnumerable 接口继承的接口。

  2. 创建查询:现在,下一步是创建查询。在查询的帮助下,您可以从数据源中获取信息。查询存储在查询变量中,并使用查询表达式进行初始化。查询表达式包含要在数据源上执行的操作,通常,查询表达式包含三个子句,即from,where和select。 from子句用于指定数据源,where子句应用过滤器,select子句提供返回项的类型。

    例子:

    var result = from lang in language
                        where lang.Contains('C')
                        select lang;
    

    这将导致使用查询表达式初始化的查询变量。

    注意:查询变量本身不执行任何操作。它仅用于存储查询表达式的结果,并在执行查询时使用。

  3. 执行查询:查询变量存储查询表达式的结果。但是,当您使用foreach循环遍历查询变量以显示查询结果时,将执行查询。当您使用foreach循环执行查询时,则称为延迟执行。在上面的示例中,我们使用了延迟执行。
    foreach(var l in result){
    
            Console.WriteLine(l);
        }