LINQ(發音為link 但很多人都說LIN Q)
最大的特質是具備資料查詢的能力以及和 VB、C#語言進行整合的能力,
可同時配合 Entity Framework 來存取 SQL Server 資料來源。
LINQ依使用對象可分為以下幾種技術類型:
或稱為 LINQ to Collection,可以查詢實作 IEnumerable 或 IEnumerable介
面的集合物件,如查詢陣列、List、集合、檔案...等物件。
使用於 XML 查詢技術的 API,透過 LINQ 查詢運算式可以不需要再額外學
習 xPath 或 xQuery ,就可以查詢或排序 XML文件。
透道 LINQ 查詢運算式,可以對記憶體內的 Dataset 或 Data Tble 進行查詢。
可以對實作 IQueryable介面的物件做查詢,也可以直接對 SOL Server 和
SQL Server Express 資料庫進行查詢與編輯。此功能目前由 Entity Framework
與LINQ to Entity 所取代, ASP.NET MVC 最常使用 Entity Framework 來
當做 Model技術。
LINQ 查詢運算式 (Query Expression) 先透過 from 關鍵字來指定欲查詢的資料 集合以及進行資料逐一處理時所需使用的變數名稱和型別,類似使用 forcach 迴圈 的方式,將集合內查詢出來的物件逐一取出並放置到區域變數中進行比對,語法中 可以進一步使用where 條件來過濾資料,然後再使用 orderby 來指定符合條件物件 的排序方式,最後使用 select 子句來指定每次比對後所要得到的查詢結果
,或使用
select new 指定要取得的新物件並且同時指定該物件之屬性,最後再將整個LINQ的
查詢結果儲存到一個指定的變數。LINQ 查詢語法如下:
var 變數 = from[資料型別] 範圍變數 in 集合
where <條件>
orderby 欄位名稱1 [ascending|descending][,欄位名稱2[...]]
select new{[別名1=] 欄位名稱1 [,[別名2=] 欄位名稱2[...] ]};
ex:將陣列 遞減排序 及 加總
public class DefaultController : Controller
{
// GET: Default
public string ShowArrayDesc()
{
int[] score = new int[] { 78, 99, 20, 100, 66 };
string show = "";
//LINQ擴充方法寫法
//使用LINQ的OrderByDescending方法將score陣列進行遞減排序
var result = score.OrderByDescending(m => m);
//LINQ查詢運算式寫法(同上面那行用法)
//將score陣列進行遞減排序 並將結果指定給result
//var result = from m in score
// orderby m descending
// select m;
show = "遞減排序:";
foreach (var m in result)
{
show += m + ",";
}
show += "<br />";
//使用LINQ的sum方法將score陣列進行加總
show += "總和:" + result.Sum();
return show;
}
}
顯示的結果~
撰寫 LINQ 查詢時可以使用前面所介紹的查詢運算式(Query Expression)和方法語法(Fluent Syntax)。 LINQ 方法之語法基本上是以擴充方法和 Lambda 表達式來建立查詢。
查詢運鼻式與方法語法兩者執行結果雖然相同,但大部份的情況使用 LNQ
方法在寫法上會比較簡潔,若是查詢運算式語法過多(例如使用 Join 來進行合併),
則使用方法語法會比較不容易撰寫,因此開發人員可視實際倩況來選擇 LINQ 查詢
運算式或是 LINQ 方法語法。LINQ 方法語法如下:
var 變數 = 集合.LINQ擴充方法(Lamdba運算式)
ex:
var result = score.OrderBy(m => m);
內容參考自:跟著實務學習ASP NET MVC