.NET的那些事兒(5)——C#3.0 LINQ 查詢文法

來源:互聯網
上載者:User

一、LINQ介紹

LINQ,語言級整合查詢(Language INtegrated Query)

經過了最近 20 年,物件導向編程技術(object-oriented (OO) programming technologies)在工業領域的應用已經進入了一個穩定的發展階段。程式員現在都已經認同像 類(classes)、對象(objects)、方法(methods)這樣的語言特性。考察現在和下一代的技術,一個新的編程技術的重大挑戰開始呈現出來,即物件導向技術誕生以來並沒有解決降低訪問和整合資訊資料(accessing and integrating information)的複雜度的問題。其中兩個最主要訪問的資料來源與資料庫(database )和 XML 相關。

LINQ 提供了一條更常規的途徑即給 .Net Framework 添加一些可以應用於所有資訊源(all sources of information )的具有多種用途(general-purpose)的文法查詢特性(query facilities ),這是比向開發語言和運行時(runtime )添加一些關係資料(relational)特性或者類似 XML 屬性(XML-specific)更好的方式。這些文法特性就叫做 .NET Language Integrated Query (LINQ) 。

二、LINQ文法

1. LINQ的讀法:(1)lin k (2)lin q
2. LINQ的關鍵詞:from, select, in, where, group by, order by …
3. LINQ的注意點:必須以select或者是group by 結束。
4. LINQ的語義:
from 臨時變數 in 集合對象或資料庫物件
where 條件運算式
[order by條件]
select 臨時變數中被查詢的值
[group by 條件]

三、C#3.0 LINQ樣本

首先來看一個很簡單的LINQ查詢例子,查詢一個int 數組中小於5的數字,並按照大小順序排列:

using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;</p><p>namespace LINQ1<br />{<br /> class Program<br /> {<br /> static void Main(string[] args)<br /> {<br /> int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };<br /> var m = from n in arr where n < 5 orderby n select n;<br /> foreach (var n in m)<br /> {<br /> Console.WriteLine(n);<br /> }<br /> Console.ReadLine();<br /> }<br /> }<br />}<br />

上述代碼除了LINQ查詢文法外,其他都是我們所熟悉的文法,而LINQ查詢文法跟SQL查詢文法很相識,除了先後順序。

再看一個相對複雜的例子:在我們羅列的語言字串中,我們希望按照字元長短,分類羅列出來,實現代碼如下

using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;</p><p>namespace LINQ1<br />{<br /> class Program<br /> {<br /> static void Main(string[] args)<br /> {<br /> string[] languages = { "Java", "C#", "C++", "Delphi", "VB.net", "VC.net", "C++ Builder", "Kylix", "Perl", "Python" };<br /> var query = from item in languages<br /> orderby item<br /> group item by item.Length into lengthGroups<br /> orderby lengthGroups.Key descending<br /> select lengthGroups;<br /> foreach (var item in query)<br /> {<br /> Console.WriteLine("strings of length ", item.Key);<br /> foreach (var val in item)<br /> {<br /> Console.WriteLine(val);<br /> }<br /> }<br /> Console.ReadLine();<br /> }<br /> }<br />}<br />

參考資料

1、C#3.0 LINQ 查詢文法 :http://blog.joycode.com/ghj/archive/2007/06/07/103960.aspx

2、LINQ專題:http://tech.it168.com/zt/linq/index.html

3、XML和LINQ實戰詳解:http://www.maeee.cn/article/it/linq/show/2008122211350135.shtml

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.