本文概述
- 编写LINQ查询的要求
- 什么是查询?
编写LINQ查询的要求 要编写LINQ查询, 我们需要以下三件事:
- 数据源(内存中的对象, SQL, XML)
- 询问
- 执行查询
每个查询是三件事的组合;他们是:
- 初始化(用于特定的数据源)
- 条件(位置, 过滤条件, 排序条件)
- 选择(单选, 组选或加入)
.NET框架在LINQ中提供了一组内置查询关键字, 以允许用户编写SQL样式查询。
LINQ有三种编写查询的方式:
- 使用查询语法
- 使用方法语法
- 使用混合语法
LINQ是以可访问且可读的格式编写复杂的LINQ查询的最简单方法之一。这种查询的语法与SQL查询非常相似。
LINQ的语法为:
文章图片
在LINQ中, 我们遵循某些规则来编写LINQ查询。语法与SQL不同。为了用LINQ编写查询, 需要遵循以下语法层次结构:
from <
variable>
in <
collection>
<
where, joining, grouping, operators, etc.>
<
lambda expression>
<
select or groupBy operator>
<
format the results>
【LINQ语法详解】在LINQ中编写查询时, 将遵循此顺序。 LINQ的起点将从” from” 关键字开始, 后跟一个用户定义的变量, 后跟一个in, 它指定数据的集合或引用的源, 后跟一个where子句。如果在选择离子之前可以使用特定查询来过滤记录和选择, 则后面跟着, 并将其分组为子句。
LINQ查询中子句的顺序将如下所示:
Clauses | Description |
---|---|
From | [Identifier] |
In | [资料来源] |
Let | [Expression] |
Where | [Boolean Expression] |
order by | [Expression] |
Select | [Expression] |
group by | [Expression] |
into | [Expression] |
C#中的LINQ查询语法
int[] Num = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
IEnumerable<
int>
result = from numbers in Numwhere numbers >
3select numbers;
现在, 通过以下示例, 我们将了解如何使用LINQ查询语法:
示例:我们有一个整数列表, 我们需要编写一个LINQ查询, 该查询将返回所有大于5的整数。在这里, 我们将创建一个控制台应用程序。
使用查询语法的示例
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespace ConsoleApp1{classProgram{staticvoid Main(string[] args){//Data SourceList<
int>
integerList = new List<
int>
(){1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//LINQ Query using Query SyntaxvarQuerySyntax = fromobjinintegerListwhereobj>
5selectobj;
//Executionforeach (var item inQuerySyntax){Console.Write(item + " ");
}Console.ReadKey();
}}}
现在我们将运行该应用程序, 它将显示值6、7、8、9、10, 如下面控制台窗口中的输出所示。
输出
文章图片
文章图片
LINQ方法语法
如今, 方法语法成为编写LINQ查询的最流行方法。它使用lambda表达式来定义查询的条件。方法语法易于编写简单查询, 以对特定数据源执行读写操作。对于复杂的查询, 方法语法比查询语法要难一些。
在这种方法中, LINQ查询是通过使用多种方法并将其与点(。)组合而成的。
对于这种方法, 语法为:
文章图片
现在, 我们将使用LINQ方法语法来重写同一示例:
using System;
usingSystem.Collections.Generic;
usingSystem. Linq;
usingSystem. Text;
usingSystem.Threading.Tasks;
namespace ConsoleApp1{classProgram{staticvoid Main(string[] args){//Data SourceList<
int>
integerList = new List<
int>
(){1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//LINQ Query using Method SyntaxvarMethodSyntax = integerList.Where(obj =>
obj>
5).ToList();
//Executionforeach (var item inMethodSyntax){Console.Write(item + " ");
}Console.ReadKey();
}}}
输出
文章图片
LINQ混合语法
LINQ混合语法是Query和MethodSyntax的组合。
文章图片
示例:现在, 我们正在更改需求。首先, 我们需要过滤值大于5的列表, 然后需要计算总和。
using System;
usingSystem.Collections.Generic;
usingSystem. Linq;
usingSystem. Text;
usingSystem.Threading.Tasks;
namespace ConsoleApp1{classProgram{staticvoid Main(string[] args){//Data SourceList<
int>
integerList = new List<
int>
(){1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//LINQ Query using Mixed SyntaxvarMethodSyntax = (fromobjinintegerListwhereobj>
5selectobj).Sum();
//ExecutionConsole.Write("Sum Is : " + MethodSyntax);
Console.ReadKey();
}}}
现在我们运行该应用程序, 它将显示总和为40, 如下面控制台窗口中的输出所示。
输出
文章图片
推荐阅读
- LINQ Min()函数
- LINQ Lambda表达式语法
- LINQ基本原理简介
- LINQ教程介绍
- halcon|halcon 制作标定板
- halcon|halcon 深度学习(一)(分类)
- 有趣例题|力扣 142.环形链表
- 笔记|顺序表的实现