📅  最后修改于: 2021-01-06 05:06:24             🧑  作者: Mango
在继续进行LINQ查询语法之前,我们将讨论与LINQ语法相关的一些基本术语:
要编写LINQ查询,我们需要以下三件事:
查询不过是一组指令。查询将应用于数据源(即内存中的对象,SQL,XML等)以执行操作(即CRUD操作)并显示该查询的输出形状。这意味着查询对输出内容不负责;相反,它负责输出的形状。
每个查询是三件事的组合;他们是:
LINQ是“语言集成查询”的首字母缩写。主要功能是允许用户使用查询语法以代码内的SQL查询样式编写查询。
.NET框架在LINQ中提供了一组内置查询关键字,以允许用户编写SQL样式查询。
LINQ有三种编写查询的方式:
LINQ是以可访问且可读的格式编写复杂的LINQ查询的最简单方法之一。这种查询的语法与SQL查询非常相似。
LINQ的语法为:
在LINQ中,我们遵循某些规则来编写LINQ查询。语法与SQL不同。为了用LINQ编写查询,需要遵循如下语法层次结构:
from in
< where, joining, grouping, operators, etc.>
在LINQ中编写查询时,将遵循此顺序。 LINQ的起点将从关键字“ from ”开始,其后是用户定义的变量,后跟in,其中指定数据的集合或引用的源,其后是where子句。如果在选择离子之前有一个特定的查询可以用来过滤记录和选择,则后面紧跟着并将其分组为子句。
LINQ查询中子句的顺序将如下所示:
Clauses | Description |
---|---|
From | [Identifier] |
In | [Source Collection] |
Let | [Expression] |
Where | [Boolean Expression] |
order by | [Expression] |
Select | [Expression] |
group by | [Expression] |
into | [Expression] |
C#中LINQ查询的代码片段
C#中的LINQ查询语法
int[] Num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
IEnumerable result = from numbers in Num
where numbers >3
select numbers;
现在,通过以下示例,我们将了解如何使用LINQ查询语法:
示例:我们有一个整数列表,我们需要编写一个LINQ查询,该查询将返回所有大于5的整数。在这里,我们将创建一个控制台应用程序。
使用查询语法的示例
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespace ConsoleApp1
{
classProgram
{
staticvoid Main(string[] args)
{
//Data Source
ListintegerList = new List()
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
//LINQ Query using Query Syntax
varQuerySyntax = fromobjinintegerList
whereobj> 5
selectobj;
//Execution
foreach (var item inQuerySyntax)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
}
}
现在,我们将运行该应用程序,它将显示值6、7、8、9、10,如下面控制台窗口中的输出所示。
输出量
方法语法成为当今编写LINQ查询的最流行方法。它使用lambda表达式来定义查询的条件。方法语法易于编写简单的查询,以对特定数据源执行读写操作。对于复杂的查询,方法语法比查询语法要难一些。
在这种方法中,LINQ查询是通过使用多种方法并将其与点(。)组合而成的。
对于这种方法,语法为:
现在,我们将使用LINQ方法语法重写相同的示例:
using System;
usingSystem.Collections.Generic;
usingSystem. Linq;
usingSystem. Text;
usingSystem.Threading.Tasks;
namespace ConsoleApp1
{
classProgram
{
staticvoid Main(string[] args)
{
//Data Source
ListintegerList = new List()
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
//LINQ Query using Method Syntax
varMethodSyntax = integerList.Where(obj =>obj> 5).ToList();
//Execution
foreach (var item inMethodSyntax)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
}
}
输出量
LINQ混合语法是Query和MethodSyntax的组合。
示例:现在,我们正在更改需求。首先,我们需要过滤值大于5的列表,然后需要计算总和。
using System;
usingSystem.Collections.Generic;
usingSystem. Linq;
usingSystem. Text;
usingSystem.Threading.Tasks;
namespace ConsoleApp1
{
classProgram
{
staticvoid Main(string[] args)
{
//Data Source
ListintegerList = new List()
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
//LINQ Query using Mixed Syntax
varMethodSyntax = (fromobjinintegerList
whereobj> 5
selectobj).Sum();
//Execution
Console.Write("Sum Is : " + MethodSyntax);
Console.ReadKey();
}
}
}
现在我们运行该应用程序,它将显示总和为40,如下面控制台窗口中的输出所示。
输出量