ASP.NET网站开发-八大基本子句

from … in子句:指定查询操作的数据源和范围变量
select子句:指定查询结果的类型和表现形式
where子句:筛选元素的逻辑条件,一般由逻辑运算符组成
group … by子句:对查询进行分组
orderby子句:对查询结果进行排序,可以为“升序”或“降序”
join子句:连接多个查询操作的数据源
let子句:引入用于存储查询表达式中的子表达式结果的范围变量

into子句:提供一个临时标示符,充当对join、group或select子句的结果

  • from子句

LINQ查询表达式必须包含from子句,且以from开头。如果该查询表达式还包含子查询,那么子查询表达式也必须以from子句开头。

注意:from子句指定的数据源的类型必须为IEnumerable、IEnumerable<T>或前两者的派生类型。
//创建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>的对象序列。

注意:一般情况下,group子句不需要使用into子句。如果需要对group子句的结果中的每一个组进行操作,则需要使用into子句来表示结果的中的组。
//创建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();
join有3种联接关系

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;


猜你喜欢

转载自blog.csdn.net/cool__king/article/details/79846154
今日推荐