• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C#3.0 LINQ 查詢語法

    發表于:2008-05-07來源:作者:點擊數: 標簽:
    首先來看一個很簡單的linq查詢例子,查詢一個int 數組中小于5的數字,并按照大小順序排列: class program{ static void main( string [] args){ int [] arr = new int [] { 8 , 5 , 89 , 3 , 56 , 4 , 1 , 58 };var m = from n in arr where n 5 orderby n s
    首先來看一個很簡單的linq查詢例子,查詢一個int 數組中小于5的數字,并按照大小順序排列:
    class program { static void main(string[] args) { int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 }; var m = from n in arr where n < 5 orderby n select n; foreach (var n in m) { console.writeline(n); } console.readline(); } }
      上述代碼除了linq查詢語法外,其他都是我們所熟悉的語法,而linq查詢語法跟sql查詢語法很相識,除了先后順序。


      q:為何 linq 查詢語法是以 from 關鍵字開頭的,而不是以 select 關鍵字開頭的?select 開頭這種寫法跟sql的寫法更接近,更易懂呀?

      a:簡單來說,為了ide的智能感知(intelisence)這個功能,select 關鍵字放在后面了。

      編程語言以 select 開頭寫linq查詢語法不是沒出現過,你如果使用過2005年的vb9 ctp 版本,那時候vb9的linq查詢語法就是 select 關鍵字在前面,但是 select 關鍵字在前面,在做智能感知(intelisence)時候就很頭大。經過微軟ide組的權衡,確定了把 from 關鍵字放在最前面。

      比如:你看 http://blog.joycode.com/saucer/archive/2005/09/16/63513.aspx 這篇博客,那時候 vb9 linq的查詢語法還是 select 參數在最前面。不過后來 vb9 測試版改成了跟 c# 一樣的做法, from 關鍵字放在最前面了。 


      假設你要書寫這樣的代碼:select p.name, p.age from p in persons where xxx ,代碼是一個個字符輸入的。

      我們在寫到 p in persons 之前,p 的類型是無法推測的,所以寫 select p. 的時候,name之類的屬性不會彈出智能提示來。

      這樣就需要先去寫 from 這句,再回來寫 select。

      微軟ide組經過反復考慮決定,還不如就把 select 寫到后面了。于是編程語言中的寫法就確定這樣來寫了。

      我們再來看一個稍稍復雜的linq查詢:

      在我們羅列的語言字符串中,我們希望按照字符長短,分類羅列出來,實現代碼如下:

    static void main(string[] args) { string [] languages = {"java","c#","c++","delphi","vb.net","vc.net","c++ builder","kylix","perl","python"}; var query = from item in languages orderby item group item by item.length into lengthgroups orderby lengthgroups.key descending select lengthgroups; foreach (var item in query) { console.writeline("strings of length {0}",item.key); foreach (var val in item) { console.writeline(val); } } console.readline(); }
      其中的 into 關鍵字表示 將前一個查詢的結果視為后續查詢的生成器,這里是跟 group by 一起使用的。

      linq中的group by不要跟 sql 中的group by 混淆,sql 由于是二維結構,group by 的一些邏輯受二維結構的約束,無法象 linq 中的group by 這么靈活。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>