查询是用于从数据源恢复数据的表达式。通常,查询用某种专门的语言表示。开发了不同类型的语言来访问不同类型的数据源,例如用于关系数据库的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查询包含三个不同的操作:
- 获取数据源:在上面的示例中,数据源是一个数组。
string[]language = {"C#", "VB", "Java", "C++", "C", "Perl", "Ruby", "Python"};
隐式支持通用IEnumerable
接口。在LINQ查询中,这是一个基本规则,即任何对象的数据源都必须支持IEnumerable 接口或从IEnumerable 接口继承的接口。 - 创建查询:现在,下一步是创建查询。在查询的帮助下,您可以从数据源中获取信息。查询存储在查询变量中,并使用查询表达式进行初始化。查询表达式包含要在数据源上执行的操作,通常,查询表达式包含三个子句,即from,where和select。 from子句用于指定数据源,where子句应用过滤器,select子句提供返回项的类型。
例子:
var result = from lang in language where lang.Contains('C') select lang;
这将导致使用查询表达式初始化的查询变量。
注意:查询变量本身不执行任何操作。它仅用于存储查询表达式的结果,并在执行查询时使用。
- 执行查询:查询变量存储查询表达式的结果。但是,当您使用foreach循环遍历查询变量以显示查询结果时,将执行查询。当您使用foreach循环执行查询时,则称为延迟执行。在上面的示例中,我们使用了延迟执行。
foreach(var l in result){ Console.WriteLine(l); }