Asp.net網站開發(一)LINQ TO SQL 之八大字句


1.   from  in子句:指定查詢操作的數據源和變量範圍

//創建LinqDB數據庫上下文實例

           DataClasses1DataContext db = new DataClasses1DataContext();

 //使用lINQ查詢表達式查詢數據

           var query = from stu in db.student

                       join   m  in db.mark  on  stu.sid equals m.sid

                       select new { 姓名=stu.sname,科目=m.subject,成績=m.score };

           //設置數據源並綁定數據

          GridView1.DataSource = query;

          GridView1.DataBind();

 

2.   select子句:指定查詢結果的類型和表現形式

3.   where子句:刪選元素的邏輯條件,一般由邏輯運算符組成

4.   groupby子句:對查詢進行分組

 

  DataClasses1DataContext db = new DataClasses1DataContext();  
  
            var query = from m in db.mark

                        group m by m.mid into g

                        orderby g.Key

                        select new { g.Key, 成績 = g.Max(c => c.score) };

         
           GridView1.DataSource = query;  
  
           GridView1.DataBind();  

 

5.   orderby子句:對查詢結果排序,可以爲升序或降序

降序:

DataClasses1DataContext db = new DataClasses1DataContext();
             var q = db.mark
                 .OrderByDescending(P => P.score )
                 .ToList();
             GridView1.DataSource = q;

             GridView1.DataBind();
或者:

升序:

//創建LinqDB數據庫上下文實例

           DataClasses1DataContext db = new DataClasses1DataContext();

            //使用lINQ查詢表達式查詢數據

           var  query = from m in  db.mark

                       join  stu in db.student on  m.sid equals stu.sid

                       orderby  m.score  ascending

                       select  new { 姓名 =stu.sname, 科目 = m.subject, 成績 = m.score };

 

            //設置數據源並綁定數據

           GridView1.DataSource = query;

           GridView1.DataBind();

或者

 DataClasses1DataContext db = new DataClasses1DataContext();
             var q = db.mark
                 .OrderBy(P => P.score )
                 .ToList();
             GridView1.DataSource = q;

             GridView1.DataBind();
                 


6.   join子句:連接多個查詢操作的數據源

//創建LinqDB數據庫上下文實例

           DataClasses1DataContext db = new DataClasses1DataContext();

           //使用lINQ查詢表達式查詢數據

           var query = from stu in db.student

                       join m in db.mark on stu.sid equals m.sid

                       select  new { 姓名=stu.sname,科目=m.subject,成績=m.score };

           //設置數據源並綁定數據

          GridView1.DataSource = query;

          GridView1.DataBind();

7.   let子句:引入用於儲存查詢表達式中的子表達式結果的範圍變量

             DataClasses1DataContext db = new DataClasses1DataContext();
             var q = from m in db.mark
                     let n = m.score 
                     where n >90
                     select  m ;
                     
      
             GridView1.DataSource = q;

             GridView1.DataBind();

8.   into子句:提供一個臨時標誌符,充當對group,select,join,子句的結果

用於select:

             DataClasses1DataContext db = new DataClasses1DataContext();
             var q = from stu in db.student
                     where stu.sid > 2
                     select new { 學號 = stu.sid, 姓名 = stu.sname }
                         into s
                         orderby s.學號
                         select s;
      
             GridView1.DataSource = q;

             GridView1.DataBind();

附數據庫代碼:

 use master

       go

       if exists(select * from sys.databases where name='Student')

      drop database Student

      create database Student

       go

      use Student

       if exists(select * from sys.tables  where name='student')

     drop database student

     create table student

     (

     sid int primary key identity(1,1) ,

     sname varchar(10) not null

      

     )

     if exists(select * from sys.tables where name='mark')

    drop database mark

     create table mark

     (

     mid int  primary key identity(1,1) ,

     subject varchar(10) not null,

     score int not null,

     sid int references student(sid)

     )

     insert into student values ('林彥俊')

     insert into student values ('靈超')

     insert into student values ('尤長靖')

     insert into student values ('木子洋')

     insert into mark values ('html',100,1)

     insert into mark values ('sql',90,1)

     insert into mark values ('html',10,2)

     insert into mark values ('sql',60,2)

     insert into mark values ('html',99,3)

     insert into mark values ('sql',91,4)

     select *from student

    select * from mark



數據庫運行結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章