select子句:指定查询结果的类型和表现形式
where子句:筛选元素的逻辑条件,一般由逻辑运算符组成
group … by子句:对查询进行分组
orderby子句:对查询结果进行排序,可以为“升序”或“降序”
join子句:连接多个查询操作的数据源
let子句:引入用于存储查询表达式中的子表达式结果的范围变量
into子句:提供一个临时标示符,充当对join、group或select子句的结果
- from子句
LINQ查询表达式必须包含from子句,且以from开头。如果该查询表达式还包含子查询,那么子查询表达式也必须以from子句开头。
//创建linqDB数据库上下文实例
LinqDBDataContext DB = new LinqDBDataContext();
//linqtosql 查询结果
//使用from …in子句
var query = from user in DB.UserInfo
where user.ID < 5
select user;
//指定数据源
GridView1.DataSource = query;
//绑定数据源
GridView1.DataBind();
- where子句
where子句指定筛选元素的逻辑条件,一般由逻辑运算符(如逻辑“与”,逻辑“或”)组成,一个查询表达式可以不包含where子句,也可以包含一个或多个where子句。在where子句中可以使用&&和||运算符来连接where子句中的多个布尔条件表达式。但是where子句不能作为查询表达式的第一个和最后一个子句。
//创建linqDB数据库上下文实例
LinqDBDataContext DB = new LinqDBDataContext();
//linqtosql 查询结果
//使用from …in子句
var query = from user in DB.UserInfo
//where子句筛选user.ID < 5的结果
where user.ID < 5
//select语句指定查询结果
select user;
//指定数据源
GridView1.DataSource = query;
//绑定数据源
GridView1.DataBind();
- select子句
select子句指定查询结果的类型和表现形式。LINQ查询表达式必须以select子句结束或group子句结束,否则会给出错误提示。
- group子句
group子句对查询的结果进行分组,并返回元素类型为IGrouping<TKE,TElement>的对象序列。
//创建linqDB数据库上下文实例
LinqDBDataContext DB = new LinqDBDataContext();
//linq分组
var query = from res in
(from user in DB.UserInfo
join order in DB.Order on user.ID equals order.UserId
select new { ID = user.ID, Name = user.Username }
)
//使用group…by进行分组
group res by res.ID;
foreach (var item in query)
{
//创建GV
GridView gridView = new GridView();
//设置GV的id属性
gridView.DataSource = item;
gridView.DataBind();
//添加html元素
Page.Form.Controls.Add(gridView);
}
- orderby子句
orderby子句可以对查询结果进行排序。排序方式可以为“升序”或“降序”,且排序的键可以为一个或多个。LINQ查询表达式对查询的结果的默认排序方式为“升序”。
LinqDBDataContext DB = new LinqDBDataContext();
var query = from user in DB.UserInfo
join role in DB.UserRole on user.ID equals role.UserID
where user.ID < 5 && user.Username.Length >= 3
//使用orderby子句进行查询结果排序
orderby user.Username descending
select new { ID = user.ID, Name = user.Username, Role = role.Role.RoleName };
GridView1.DataSource = query;
GridView1.DataBind();
- into子句
into子句可以创建一个临时标识符,使用该标识符可以存储group、join、select子句的结果。
var groups = from word in words
orderby word ascending
group word by word.Length into lengthGroups
orderby lengthGroups.Key descending
select new { Length = lengthGroups.Key, Words = lengthGroups };
- join子句
join子句可以设置两个数据源之间的关系。这两个数据源之间必须存在关联的属性或值。
LinqDBDataContext DB = new LinqDBDataContext(); var query = from user in DB.UserInfo
//使用join连接role 表和user表
join role in DB.UserRole on user.ID equals role.UserID where user.ID < 5 && user.Username.Length >= 3
//使用orderby子句进行查询结果排序
orderby user.Username descending
select new { ID = user.ID, Name = user.Username, Role = role.Role.RoleName };
GridView1.DataSource = query;
GridView1.DataBind();
1、 内部联接:元素的连接关系必须同时满足被联接的两个数据源。
2、 分组联接:含有into子句的join子句。
3、 左外部联接:返回第一个集合中的每一个元素,不管第二个集合中是否具有相关元素。
- let子句
let子句可以创建一个新的范围变量,并且使用该变量保存表达式中的结果。let子句指定范围变量的值通过初始化操作进行赋值,范围变量的值一但被初始化,将不能再被改变。
//使用let子句创建范围变量g,并通过g构建查询表达式
var query = from guest in gList
let g = guest.Name.Substring(0, 1)
where g == "D" || g == "J"
select guest;