asp.net使用LINQ to SQL串連資料庫及SQL動作陳述式用法分析_實用技巧

來源:互聯網
上載者:User

本文執行個體講述了asp.net使用LINQ to SQL串連資料庫及SQL動作陳述式用法。分享給大家供大家參考,具體如下:

LINQ簡介

LINQ:Language-integrated Query (LINQ)(Language INtegrated Query)是一組用於c#和Visual Basic語言的擴充。它允許編寫C#或者Visual Basic代碼以查詢資料庫相同的方式操作記憶體資料。

LINQ是一門查詢語言,和SQL一樣,通過一些關鍵字的組合,實現最終的查詢。

LINQ的分類

LINQ to Object
LINQ to XML
LINQ to SQL
LINQ to DataSet
LINQ to ADO.NET

命名空間為System.Linq;

LINQ查詢

文法:
from 臨時變數 in 集合對象或資料庫物件
  where 條件運算式
  [orderby條件]
  [group by 條件]
  select 臨時變數中被查詢的值

例:

from c in Student select c;

假設Student是一個資料庫表對應的一個實體類

則查詢語句為:

from c in Student select c; //整表查詢from c in Student where c.name=="張三" select c;//查詢姓名為張三的所有資訊

其中C為臨時變數,可任意取。

查詢幾個欄位

1、查詢student表中的幾個欄位

複製代碼 代碼如下:
var query=from c in student  select new {c.number,c.name,c.age};

2、查詢student表中的幾個欄位,並重新設定列名

複製代碼 代碼如下:
var query=from c in student select new {學號=c.number,姓名=c.name, 年領=c.age};

注意事項

linq查詢語句必須以from子句開始,以select 子句結束。

Linq是在.NET Framework 3.5 中出現的技術,所以在建立新項目的時候必須要選3.5或者更高版本,否則無法使用。

3、排序

var query=from c in student orderby c.age ascending select c;//升序var query=from c in studeng orderby c.age descending select c;//降序

4、分組

複製代碼 代碼如下:
var  query=from c in student group c by c.sex into d select new {性別=c.age}; //d為新表,c.sex為分組欄位

5、過濾重複記錄

var query=(from c in dc.student select new {c.place}).Distinct();//Distinct()的作用是過濾重複的記錄。var query=(from c in dc.student select new {分布地區=c.place}).Distinct();

6、查詢行數

(1)查詢表的總行數

int count=student.count();

(2)查詢滿足條件的行數

int count=(from c in student where c.name=="王明" select c).count();

7、模糊查詢

from c in dc.Student where c.name.Contain("王") select c

查詢姓名中含有王字的所有學生

複製代碼 代碼如下:
var query=from c in dc.Student where c.number.Contain("2009") select c

查詢學號中含有2009字元的所有學生

查詢結果

LINQ的查詢結果有可能是一個對象,也有可能是一個資料集,可用var類型進行接收

如:

var query=from c in Student select c;

輸入結果可用foreach迴圈

如:

var query=from c in Student select c;foreach( var x in query){ Response.Write(x.toString());}

常用函數

Count( ):計算查詢結果的行數
Distinct( ):對查詢結果的重複行進行篩選
First( ):取得查詢結果的第一行
Last( ):取得查詢結果的最後一行
Take(n):取得查詢結果的前n行
Skip(n):略過前n行,從n+1行開始取
Skip(m).Take(n):從m+1行開始取後面的n行

8、更新操作

思路:先把需要更新的行查詢出來,然後進行更新。LINQ只需要寫出查詢語句即可,不需要寫更新語句!

例:將學生表中學號為00001的學生進行更新

1、(from c in Stuent where c.id=="00001" select c).First();

在資料空間中顯示資料查詢結果:

前兩行是串連資料庫,其中第一中,經常用,可以放到最開始,這樣就不必每次用到時都寫了。

studentDataContext dc = new studentDataContext();//注意:xxxDataContext需要與.dbml的檔案名稱一致var query=from c in dc.student select c;GridView1.DataSource=query;GridView1.DataBind();

更新操作

string num = TextBox2.Text.Trim(); //將要更新學號為多少的相關資訊string name = TextBox3.Text.Trim();//更新的姓名int age = Convert.ToInt32(TextBox4.Text.Trim());//Int32整型 //更新的年齡StudentDataContext dc=new StudentDataContext();student stu=(from c in dc.student where c.number==num select c).First();//變數,選取第一行。where後根據主鍵來更新,其他欄位不能。即通過擷取主鍵後,來更新其他欄位。//除過主鍵不修改外,其他欄位都可以修改stu.name = name;//將新修改的名字賦值給資料庫中的欄位名namestu.age = age;//修改年齡dc.SubmitChanges();//真正的用於修改資料庫。bind();//一更改,就顯示,和及時重新整理相同。
private void bind(){studentDataContext dc = new studentDataContext(); var query = (from c in dc.student select c); //全表查詢 GridView1.DataSource = query; GridView1.DataBind();}

9、插入操作

//插入string num = TextBox1.Text.Trim();string username = TextBox2.Text.Trim();string sex = TextBox3.Text.Trim();string place = TextBox4.Text.Trim();int age = Convert.ToInt32(TextBox5.Text.Trim());student stu = new student();//建立對象//賦新值//主鍵不能重複stu.number = num;stu.name = username;stu.sex = sex;stu.place = place;stu.age = age;dc.student.InsertOnSubmit(stu);//對錶studen表進行插入操作。//注意,該函數必須寫正確。dc.SubmitChanges();//資料庫儲存bind();//內容和上面的相同

10、資料刪除

string num = TextBox6.Text.Trim();student stu =(from c in dc.student where c.number == num select c).First();dc.student.DeleteOnSubmit(stu);//刪除資料庫中的欄位,具體怎樣刪除不管,只管調用該函數即可。dc.SubmitChanges();bind();

更多關於asp.net相關內容感興趣的讀者可查看本站專題:《asp.net字串操作技巧匯總》、《asp.net操作XML技巧總結》、《asp.net檔案操作技巧匯總》、《asp.net ajax技巧總結專題》及《asp.net快取作業技巧總結》。

希望本文所述對大家asp.net程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.