程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 數據操作So easy-LINQ解析,soeasy-linq

數據操作So easy-LINQ解析,soeasy-linq

編輯:C#入門知識

數據操作So easy-LINQ解析,soeasy-linq


1、LINQ是什麼?

    LINQ是Language Integrated Query的縮寫,即“語言集成查詢”的意思。LINQ的提出就是為了提供一種跨越各種數據源的統一的查詢方式,它主要包含4個組件--Linq to Objects、Linq to XML、Linq to DataSet和Linq to SQL。

    下面簡單的介紹一下LINQ的4個組件。

    Linq to SQL組件:它可以查詢基於關系數據庫的數據。其中,微軟只實現了對SQL Server數據庫的查詢,包括對其中數據進行查詢、修改和刪除等操作。

    Linq to DataSet組件:它可以查詢DataSet對象中的數據,並能對數據進行增刪改查等操作。

    Linq to XML組件:該組件可以查詢XML文件,在它被提出來之前,C#中使用XPath來對XML進行查詢,但該工具沒有Linq to XML來得簡潔。

    Linq to Object組件:這個組件可以查詢集合數據,如數組或List等。

 

2、LINQ好在哪裡?

    好的地方:LINQ使對數據源的操作變得更加簡單、方便和易於理解。

    2.1 查詢表達式

         在說明LINQ的好處之前,需要先了解“查詢表達式”。查詢表達式必須以from子句開頭,並且必須以select或group子句結尾,在第一個from子句和最後一個select或group子句之間,可以包含一個或多個where子句、orderby、join子句。其形式非常類似於SQL語言,只是書寫倒了過來。

         //查詢表達式  var queryExp= from s in collection

                                                    select s;

         //查詢表達式還有另外一種表達方式,即“點標記方式”,var queryExp=collection.Select(s=>s);

         至於選擇什麼方式,就看程序員個人的習慣了。

    

    2.2 使用Linq to Objects查詢集合

          在LINQ提出之前,一般使用for和foreach查詢集合,但這種方式沒有LINQ to Objects來得簡潔,且不容易添加篩選條件。

//創建查詢表達式來獲得集合中為偶數的元素
var queryResults= from item in collection
                            where item%2 ==0
                            select item;

          從以上代碼可以看出,使用Linq to Objects來查詢集合對象,代碼更加簡潔了。而且LINQ還方便添加篩選條件,只需要在where子句中添加即可。

 

   2.3 使用Linq to XML 查詢XML文件

//創建查詢,獲取名字為“李四”的元素
var queryResults=from element in xmlDoc.Elements("Person")
                            where element.Element("Name").Value=="李四"
                             select element;

        從以上代碼可以看出,使用Linq to XML查詢XML文件,代碼明顯簡潔了很多,只需要一個查詢表達式即可。

        Linq to DataSet的例子這裡就不寫了,它的使用方式類似於Linq to Object,只是Linq to DataSet查詢的不是集合對象而是DataSet對象。

 

3、理解LINQ的本質

    其實在C# 3.0中並沒有添加任何新特性,因為對於編譯器而言,C# 3.0新特性的代碼和以前的代碼一樣,這對於LINQ也是不例外的。大家可以從IL代碼中得出,LINQ表達式是建立在Lambda表達式和擴展方法的基礎上的,而Lambda表達式又是建立在委托的基礎上的,擴展方法也是屬於方法,所以,LINQ的本質還是對方法的調用。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved