①from子句:指定查询操作的数据源和范围变量。
LINQ查询表达式必须包含from子句,且以from子句开头。如果该查询表达式还包含子查询,那么子查询表达式也必须以from子句开头。from子句指定查询操作数据源和范围变量。
例如:List<string>values=new List<string>{"000","111","222"};
var result = from value in values
where values=="000"
select value;
②select子句:筛选元素的逻辑条件,一般由逻辑运算符(如逻辑“与”、逻辑“或”)组成。
在LINQ查询表达式中,where子句指定筛选元素的逻辑条件,一般由逻辑运算符组成。
③where子句:指定查询结果的类型和表现形式。
在LINQ查询表达式中,select子句指定查询结果的类型和表现形式。LINQ查询表达式必须以select子句结束或group子句结束,否则会给出错误提示。
④group子句:对查询结果进行分组。
在查询表达式中,group子句对查询的结果进行分组,并返回元素类型为IGrouping<TKey, TElement>的对象序列。
例如: var result=from user in users
group user by user.ID%2;
⑤orderby子句:对查询结果进行排序,可以为“升序”或“降序”。
在LINQ表达式中,orderby子句可以对查询结果进行排序。排序方式可以为“升序”或“降序”,且排序的键可以为一个或多个。
例如:var result=from uaer in users
where user.ID<5
orderby user.Username descending
select user;
⑥join子句:连接多个查询操作的数据源。
- 内部连接:内部联接要求元素的联接关系必须同时满足被联接的两个数据源
- 分组连接:含有into子句的join子句称为分组联接。分组联接产生分层数据结构,它将第1个集合中的每个元素与第2个集合中的一组相关元素进行匹配。在查询结果中,第一个集合中的元素都会出现在查询结果中。如果第一个集合的元素在第二个集合中找到了相关元素,则使用被找到的元素,否则使用空。
- 左外部联接:左外部联接与SQL语句中的LINQ子句比较相似,它将返回第一个集合中的每一个元素,而无论该元素在第二个集合中是否具有相关元素。
⑦let子句:引入用于存储查询表达式中的字表达式结果的范围变量。
例如: var result = from user in users
let number=Int32.Pars(
user.Username.Substring(user.Username.Length-1)
where user.Id<9&&number%2==0
select user;)
⑧into子句:提供一个临时标识符。该标识可以充当对join、group或select字句的结果的引用。
查询表达式必须以from字句开头,并且必须以select或group子句结束。在第一个from子句和最后一个select或group子句之间,查询表达式可以包含一个或多个where、orderby、group、join、let子句,甚至from子句。另外,join和group子句还可以使用into子句指定临时标识符号。