一、什么是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 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查詢

iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

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é)果
    }

}

iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 

3、使用LINQ查詢對(duì)象集合

iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

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;

 }

}

iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 

四、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):iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

出處:http://www.cnblogs.com/hgmyz/

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利.

http://www.cnblogs.com/hgmyz/p/7068150.html