LINQ(发音为link 但很多人都说LIN Q)
最大的特质是具备资料查询的能力以及和 VB、C#语言进行整合的能力,
可同时配合 Entity Framework 来存取 SQL Server 资料来源。
LINQ依使用对象可分为以下几种技术类型:
1. LINQ to Objects
或称为 LINQ to Collection,可以查询实作 IEnumerable 或 IEnumerable介
面的集合物件,如查询阵列、List、集合、档案...等物件。
2. LINQ to AML
使用于 XML 查询技术的 API,透过 LINQ 查询运算式可以不需要再额外学
习 xPath 或 xQuery ,就可以查询或排序 XML文件。
3. LINQ to DataSet
透道 LINQ 查询运算式,可以对记忆体内的 Dataset 或 Data Tble 进行查询。
4. LINQ to SQL
可以对实作 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方法
撰写 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