LINQ (Language INtegrated Query),能夠利用.NET程式語言進行物件的查詢。.NET的程式語言,像是C# 3.0 (Visual C# 2008)、Visual Basic 9.0 (Visual Basic 2008) 都可利用一個LINQ提供的查詢運算式(Query Expression)語法來整合查詢能力。
LINQ為C#、Visual Basic程式語言提供基本查詢的能力,使用類似SQL查詢的語法,透過from子句指定查詢來源;利用where子句設定篩選條件;透過Order by子句做排序;以Group by子句對資料分組,再利用select子句回傳資料。再者,LINQ查詢也支援複雜的join語法,讓你快快樂樂地在程式語言中,進行複雜的連結運算, 恣意搜尋資料。
LINQ包含以下部份:
- LINQ to Object:可查詢集合與陣列中的資料
- LINQ to DataSet:查詢DataSet/DataTable中的資料。
- LINQ to SQL:查詢或異動微軟SQL Server資料庫的資料。
- LINQ to XML:查詢XML節點。
其中對於資料庫存取最重要的就是LINQ to SQL與LINQ to DataSet:
LINQ to SQL
LINQ to SQL,可以利用類似SQL查詢的語法,在執行時期將關連式資料庫的資料庫視為物件,以進行管理及查詢。這個功能真是酷斃了,想像一下你在程式中,下個類 似SQL的直覺式語法,就可以查詢物件的資料、篩選資料、做排序,而且,你的用戶端機器還不需要裝一台SQL Server。
LINQ to SQL內建了物件與關聯式資料兩者之間對應的架構,讓程式設計師能夠建立對應於資料庫結構的.NET物件模型。有了物件模型後,便可透過LINQ語法來查詢、或修改其中的資訊。而建立對應到資料庫物件的物件模型此等雜工,就交由工具去幫你做。
LINQ to DataSet
ADO.NET 提供的DataSet與DataTable具備有將資料暫存在用戶端電腦上的能力。DataSet就如離線的資料庫一般,可以存放一到多個資料表,每個資 料表為一個DataTable物件。DataSet也可以描述資料表與資料表之間的關聯,以及一對一、一對多等特色。雖然DataSet與 DataTable提供一些方法,具備有篩選、搜尋資料的能力,但認真來說,這些功能稍嫌簡陋,缺乏彈性,若想要做一些複雜的查詢,往往不能靠 DataSet、DataTable來達成。
當你利用DataAdapter把資料載入DataSet之後,若需要查詢其中的資料,就可以使用LINQ to DataSet。程式設計師可以針對DataSet來撰寫LINQ查詢。
應用程式的支援
LINQ 可以支援資料繫結 (Data Binding) 功能,不僅在Windows表單程式中可以很方便利用托曳方式進行設定,快速設計出應用程式介面,也可以在ASP.NET 網頁中,利用附加在ASP.NET 3.5版中的LinqDataSource控制項,來設計支援LINQ功能的網頁。未來不管是設計任何一種類型的.NET程式都可以加入LINQ,讓查詢 變得更簡單,讓資料的截取變的更方便。
8 則留言:
你好
謝謝你的教學
我有問題想問 LINQ TO SQL 是不是一定要用 LINQDataSource?
我明白用 LINQ TO SQL CLASS 可以自動GENERATE TSQL CODE 很放便
如果我只是想 RETRIEVE DATA
可不可以自己CREATE 一個 簡單的LINQDataSource?
謝謝你
智
使用LINQ to SQL不一定要使用LinqDataSource,您也可以直接使用程式碼,建立LINQ查詢,例如:
PubsDataContext db = new PubsDataContext();
IQueryable<publisher> pubList = from p in db.publishers
orderby p.pub_id descending
select p;
foreach (publisher p in pubList) {
Console.WriteLine("{0} - {1}", p.pub_id,p.pub_name);
foreach (title t in p.titles) {
Console.WriteLine(" {0} {1} - {2}", t.title_id,t.title1,t.price);
}
}
謝謝你 米米貓
不好意思, 想問多一個問題.
文章中 提到
4. 在伺服器總管,Northwind.dbml檔案方案滑鼠右鍵,選取「View Code」,Visual Studio 2008將會建立一個Northwind.cs檔案,其中包含一個NorthwindDataContext部分類別的定義。
我可不可以自己建立這個
NorthwindDataContext();
而不用Northwind.dbml 的?
這樣便可以不行step 3
3. 開啟Server Explorer工具,連接到Northwind資料庫,然後將Region資料表拖曳到LINQ to SQL設計畫面左方的區塊之中。
這樣visual studio 便不用 connect server explorer 了
可以嗎?
因為可以用 connection string 來 connect 個database
唔好意思
我的問題可以有點亂
希望你能明白
謝謝你
我沒有這樣試過!
但是就理論而言 LINQ to SQL只是Visual Studio提供的ORM設計工具,幫你產生物件相關的程式碼,在LINQ的設計中,您也可以不需要依賴工具來產生物件的程式碼,因此,我認為只要程式碼沒有寫錯,應該沒有理由不能這樣做!
謝謝你
明白了
等我嘗試下先
謝謝
請問什麼時候用Linq to SQL
什麼時候用Linq to DataSet呢?
LINQ to SQL:想用物件方式操作DB資料
Linq to DataSet:想查詢DataSet中資料,如進階join查詢時
感謝老師!!
張貼留言