Linq用法笔记
一、什么是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)。可以和多種數(shù)據(jù)庫(kù)一起使用,并支持各種靈活、復(fù)雜的數(shù)據(jù)模型。
三、Linq的一些用法
1、簡(jiǎn)單的LINQ查詢
| 123456789101112131415161718192021 | 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)真正方便。
轉(zhuǎn)載于:https://blog.51cto.com/12953214/1941212
總結(jié)
- 上一篇: 阿里云全球首批MVP张建平专访 - 我对
- 下一篇: 推断文本框是否为空