• <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-5-07 14:25 | 作者: 網絡轉載 | 來源: 本站原創 | 查看: 58次 | 進入軟件測試論壇討論

    領測軟件測試網 首先來看一個很簡單的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/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>