一、什么是Linq?
LINQ即Language Integrated Query(語(yǔ)言集成查詢),LINQ是集成到C#和Visual Basic.NET這些語(yǔ)言中用于提供查詢數(shù)據(jù)能力的一個(gè)新特性。
LINQ是一種用來(lái)進(jìn)行數(shù)據(jù)訪問(wèn)的編程模型,Linq可以用相同的語(yǔ)法訪問(wèn)不同的數(shù)據(jù)源,比如xml、數(shù)據(jù)庫(kù)、注冊(cè)表、事件日志等。
二、Linq包含哪些部分?
1、Linq to Sql組件:可以查詢關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù),并可以提供其他操作,如檢索、插入、修改、刪除、排序、聚合、分區(qū)等。
2、Linq to DataSet組件:查詢DataSet對(duì)象中的數(shù)據(jù)。
3、Linq to Object組件:可以查詢IEnumerable或是IEnumerable<T> 集合對(duì)象,即能夠查詢?nèi)魏慰梢悦杜e的集合,如數(shù)組(Array和ArrayList)、泛型字典Dictinary<T>等,以及用戶自定義的集合,而不需要使用Linq提供程序或API。
4、Linq to XML組件:查詢和操作XML結(jié)構(gòu)的數(shù)據(jù)。
5、Linq to Entities:是 Entity Framework 的一部分并且取代 LINQ to SQL 作為在數(shù)據(jù)庫(kù)上使用 LINQ 的標(biāo)準(zhǔn)機(jī)制。Entity Framework 是行業(yè)領(lǐng)先的對(duì)象-關(guān)系映射(ORM)系統(tǒng)??梢院投喾N數(shù)據(jù)庫(kù)一起使用,并支持各種靈活、復(fù)雜的數(shù)據(jù)模型。
三、Linq的一些用法
1、簡(jiǎn)單的LINQ查詢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | static void Main( string [] args) { int [] marks = { 60, 77, 82, 46, 59, 98, 100, 84 }; //定義一個(gè)數(shù)組 var good = from m in marks //使用LINQ找到所有數(shù)值大于等于60的數(shù)字 where m >= 60 select m; foreach ( int mark in good) //循環(huán)每一個(gè)結(jié)果 { Console.WriteLine(mark); //輸出結(jié)果 } } |
2、使用Lambda表達(dá)式的LINQ查詢
static void Main(string[] args) { int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 }; var good = marks.Where(m => m >= 60);//使用Lambda表達(dá)式查詢數(shù)值大于等于60的數(shù)字 foreach (int mark in good)//循環(huán)每一個(gè)結(jié)果 { Console.WriteLine(mark);//輸出結(jié)果 } }
3、使用LINQ查詢對(duì)象集合
class Program {static void Main(string[] args) { List<Student> students = new List<Student>//申明Student對(duì)象的集合 {new Student{ StudentID=1, Sex=true, Name="小明", Birthday=Convert.ToDateTime("1984-1-1")},new Student{ StudentID=2, Sex=false, Name="小張", Birthday=Convert.ToDateTime("1983-5-1")},new Student{ StudentID=3, Sex=true, Name="小王", Birthday=Convert.ToDateTime("1983-2-15")},new Student{ StudentID=4, Sex=false, Name="小麗", Birthday=Convert.ToDateTime("1985-3-8")} };//接下來(lái)使用LINQ查詢所有年齡小于25歲的男性 var names = from s in students where s.Sex == true&&s.GetAge()<25 //調(diào)用對(duì)象的方法 select s.Name; foreach (string name in names)//循環(huán)輸出結(jié)果 { Console.WriteLine(name); } } }public class Student //定義Student類{//以下是定義類中屬性 public string Name { get; set; } public int StudentID { get; set; } public bool Sex { get; set; } public DateTime Birthday { get; set; }//以下是定義類中的方法 public int GetAge() { return DateTime.Now.Year - Birthday.Year; } }
四、Linq有什么好處?
1、容易上手,學(xué)習(xí)成本低
2、可以很大程度上減少代碼量。
3、更快開(kāi)發(fā)錯(cuò)誤更少的應(yīng)用程序。
4、可以很容易的合并數(shù)據(jù)源。
5、讓新開(kāi)發(fā)者開(kāi)發(fā)效率更高。
6、任何對(duì)象或數(shù)據(jù)源都可以定制實(shí)現(xiàn)Linq適配器,為數(shù)據(jù)交互帶來(lái)真正方便。
歡迎關(guān)注我的公眾號(hào)(同步更新文章):DoNet技術(shù)分享平臺(tái)
作者:天使不哭
微信號(hào):hgmyzhl
微信公眾號(hào):
出處:http://www.cnblogs.com/hgmyz/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利.
http://www.cnblogs.com/hgmyz/p/7068150.html