日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
LINQ查詢(xún)語(yǔ)法敘述

學(xué)習(xí)LINQ時(shí),經(jīng)常會(huì)遇到LINQ查詢(xún)語(yǔ)法問(wèn)題,這里將介紹LINQ查詢(xún)語(yǔ)法問(wèn)題的解決方法。

LINQ查詢(xún)語(yǔ)法

首先來(lái)看一個(gè)很簡(jiǎn)單的LINQ查詢(xún)例子,查詢(xún)一個(gè)int 數(shù)組中小于5的數(shù)字,并按照大小順序排列:

 
 
 
  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };  
  6.  
  7. var m = from n in arr where n < 5 orderby n select n;  
  8. foreach (var n in m)  
  9. {  
  10. Console.WriteLine(n);  
  11. }  
  12. Console.ReadLine();  
  13. }  
  14. }  

上述代碼除了LINQ查詢(xún)語(yǔ)法外,其他都是我們所熟悉的語(yǔ)法,而LINQ查詢(xún)語(yǔ)法跟SQL查詢(xún)語(yǔ)法很相識(shí),除了先后順序。

為何 LINQ 查詢(xún)語(yǔ)法是以 from 關(guān)鍵字開(kāi)頭的,而不是以 select 關(guān)鍵字開(kāi)頭的?select 開(kāi)頭這種寫(xiě)法跟SQL的寫(xiě)法更接近,更易懂呀?簡(jiǎn)單來(lái)說(shuō),為了IDE的智能感知(Intelisence)這個(gè)功能,select 關(guān)鍵字放在后面了。

編程語(yǔ)言以 select 開(kāi)頭寫(xiě)LINQ查詢(xún)語(yǔ)法不是沒(méi)出現(xiàn)過(guò),你如果使用過(guò)2005年的VB9 CTP 版本,那時(shí)候VB9的LINQ查詢(xún)語(yǔ)法就是 select 關(guān)鍵字在前面,但是 select 關(guān)鍵字在前面,在做智能感知(Intelisence)時(shí)候就很頭大。經(jīng)過(guò)微軟IDE組的權(quán)衡,確定了把 from 關(guān)鍵字放在最前面。

比如:VB9 LINQ的查詢(xún)語(yǔ)法還是select 參數(shù)在最前面。不過(guò)后來(lái) VB9 測(cè)試版改成了跟 C# 一樣的做法, from 關(guān)鍵字放在最前面了。更詳細(xì)的解釋?zhuān)瑏?lái)自裝配腦袋,假設(shè)你要書(shū)寫(xiě)這樣的代碼:Select p.Name, p.Age From p In persons Where xxx ,代碼是一個(gè)個(gè)字符輸入的。我們?cè)趯?xiě)到 p in persons 之前,p 的類(lèi)型是無(wú)法推測(cè)的,所以寫(xiě) Select p. 的時(shí)候,Name之類(lèi)的屬性不會(huì)彈出智能提示來(lái)。

這樣就需要先去寫(xiě) From 這句,再回來(lái)寫(xiě) Select。微軟IDE組經(jīng)過(guò)反復(fù)考慮決定,還不如就把 Select 寫(xiě)到后面了。于是編程語(yǔ)言中的寫(xiě)法就確定這樣來(lái)寫(xiě)了。

我們?cè)賮?lái)看一個(gè)稍稍復(fù)雜的LINQ查詢(xún):

在我們羅列的語(yǔ)言字符串中,我們希望按照字符長(zhǎng)短,分類(lèi)羅列出來(lái),實(shí)現(xiàn)代碼如下:

 
 
 
  1. static void Main(string[] args)  
  2. {  
  3. string [] languages = {"Java","C#","C++","Delphi","VB.net","VC.net",
    "C++ Builder","Kylix","Perl","Python"};  
  4.  
  5. var query = from item in languages  
  6. orderby item  
  7. group item by item.Length into lengthGroups  
  8. orderby lengthGroups.Key descending  
  9. select lengthGroups;  
  10.  
  11. foreach (var item in query)  
  12. {  
  13. Console.WriteLine("strings of length {0}",item.Key);  
  14. foreach (var val in item)  
  15. {  
  16. Console.WriteLine(val);  
  17. }  
  18. }  
  19. Console.ReadLine();  
  20. }  

其中的 into 關(guān)鍵字表示 將前一個(gè)查詢(xún)的結(jié)果視為后續(xù)查詢(xún)的生成器,這里是跟 group by 一起使用的。

LINQ中的Group by不要跟 SQL 中的Group by 混淆,SQL 由于是二維結(jié)構(gòu),Group by 的一些邏輯受二維結(jié)構(gòu)的約束,無(wú)法象 LINQ 中的Group by 這么靈活。

【編輯推薦】

  1. Linq結(jié)果集形狀概述
  2. Linq存儲(chǔ)過(guò)程返回詳解
  3. Linq調(diào)用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡(jiǎn)單描述
  5. Linq對(duì)象引用簡(jiǎn)單介紹

網(wǎng)站題目:LINQ查詢(xún)語(yǔ)法敘述
標(biāo)題URL:http://www.5511xx.com/article/cdsgegj.html