跳至內容

語言整合查

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

語言整合查(英語:Language Integrated Query,縮寫:LINQ), 發音 " link ",是微軟的一項技術,新增一種自然查詢的 SQL 語法到 . NET Framework 的程式語言內底,這馬目前可支援 C # 以及 Visual Basic . NET 語言。二空空七年十一月十九隨在 . NET Framework 三-c五發布矣 LINQ 技術。

包括講 LINQ to Objects、LINQ to SQL、LINQ to Datasets、LINQ to Entities、LINQ to Data Source、LINQ to XML / XSD 等。

語言風格

LINQ 和語言的多項新增加風格,來展出查詢語言的擴充性。比如講:C # :

無頭路

無頭路(Anonymous type)是 C # 三更零與 Visual Basic 九嬸空新增的功能,伊允准開發人員會使使用無具型別的方式建立新的資料結構,真正的情形莫佇咧編譯時期,由 C # ( 抑是 VB ) Compiler 自動產生,並寫入編譯目的檔中,伊會當予開發人員會當真簡單利用匿名型別建立的物件,LINQ 中的 select 指令就是利用這款特性來建立回傳物件。

匿名類型本質上是表達元組(tuple), 採用值語意。

下列使用匿名型別的程式碼:

會由編譯器改寫:

擴展方法 ( Extension method )

Lambda 表達式 ( Lambda expression )

表達式樹 ( Expression tree )

查詢表達式語法

` ` ` from RangeVariable in IEnumerable < T > 抑是 IQueryable < T > 的 Collection < Standard Query Operators > < lambda expression > < select or groupBy operator > < result formation > ` ` `

滑溜語法

LINQ 查詢的時陣有兩種語法可供選擇:查詢表達式語法(Query Expression)佮流利語法(Fluent Syntax)。 前者使用查詢運算子;後者利用 System . Linq . Enumerable 類中定義的擴充方法和 Lambda 表達式的方式進行查詢。CLR 本身並無理解查詢表達式語法,伊干焦理解滑溜語法。編譯器負責共查詢表達式語法編譯做流利語法。

以下是一个範例 LINQ 方法語法的查詢,倒轉去陣內底的偶數:

對比較輾轉語法佮 C # 的傳統語法:

標準查詢運算子 ( Standard query operators )

System . Linq . Enumerable 靜態類別宣告一套標準查詢運算子(Standard Query Operators,SQO)方法集合。基本語法如下:

標準查詢運算子和 Lambda 表達式的關係非常密切。編譯器會欲描述表達式轉化為下述以 Lambda 表達式為參數的顯式擴充方法呼叫序列:

LINQ 的各式言語支援度

下列的言語支援 LINQ。

  • C # 三-c零
  • F # 一孵一 . 八否一
  • Visual Basic 兩千空八(九九零)

註:C + + / CLI 猶未支援 LINQ。但是閣有第三方的 C + + 套件,以及第三方的 PHP 套件

LINQ 的範例

一个簡單例:

輸出: 四十九二十五一个例:

Visual Studio 支援

LINQ 目前由 Visual Studio 兩千空八、二千空一十、二千空一十二、二千空一十三、二千空一十五、二千空一十七、二千空一十九支援。

語言擴充

軟軟仔仝款提供矣 LINQExtender,允准使用者佇咧無了解 LINQ 實現鋩角的情形下,編寫家己的 LINQ 擴充。 如:LINQ to Twitter , LINQ to Oracle , LINQ to Active Directory 等

參考文獻

外部連結

  • Official Microsoft LINQ Project(已經失效)
  • 一百空一 C # LINQ Samples
  • 一百空一 Visual Basic LINQ Samples
  • Microsoft LINQ forum
  • LINQ page on NetFXGuide . com
  • LINQ wiki
  • LINQExtender

參見

  • 物件關聯對映(ORM)