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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
System.LINQ程序集介紹

LINQ有很多值得學(xué)習(xí)的地方,這里我們主要介紹LINQ的一些強(qiáng)大功能,包括介紹System.LINQ程序集等方面。

創(chuàng)新互聯(lián)建站憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個人等客戶提供了做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

LINQ,即Language Integrated Query。很多人熟悉SQL語言,用它來操作數(shù)據(jù)庫非常方便?,F(xiàn)在在C#3.0中也可以使用相同的語法來操作各種數(shù)據(jù),包括數(shù)組,文件,數(shù)據(jù)庫等。

下面看一個例子:

 
 
 
  1. class Program  
  2. ...{  
  3. static void Main(string[] args)  
  4. ...{  
  5. string[] names=...{"Everett", "Albert", "George", "Harris", "David" };  
  6. var items=from name in names  
  7. where name.Length>=6  
  8. orderby name  
  9. select name.ToUpper();  
  10. foreach(var item in items)  
  11. Console.WriteLine(item);  
  12. }  

是不是對上面的from,where,orderby等單詞很熟悉,我們可以很輕松的像查詢數(shù)據(jù)庫一樣查詢某些數(shù)組。其實(shí)上述表達(dá)式等價于下面這樣的寫法:

 
 
 
  1. var items=names.Where(name=>name.Length>=6).
    OrderBy(name=>name).Select(name=>name.ToUpper()); 

那么我們?yōu)槭裁茨茉跀?shù)組上應(yīng)用這些方法呢,本來數(shù)組上沒有這些方法?。炕貞浺幌挛覀冊瓉碚f過的內(nèi)容,擴(kuò)展方法,對,我們在這里看到擴(kuò)展方法的用武之地了。而且我們也看到了Lambda表達(dá)式的應(yīng)用使得語句更加簡潔,易懂。這些擴(kuò)展方法定義在哪里呢?我們可以在System.LINQ程序集里面看到這樣的定義:

 
 
 
  1. namespace System.LINQ ...{   
  2. public static class Enumerable ...{   
  3. public static IEnumerable Where(   
  4. this IEnumerable source, Func, bool> predicate) ...{   
  5.  
  6. foreach (T item in source)   
  7. if (predicate(item)  
  8. )   
  9. yield return item;   
  10. }   
  11. }   
  12. }  

這里我們可以清晰的看到許多this關(guān)鍵字,這些正是擴(kuò)展方法的標(biāo)志。若果我們對Lambda表達(dá)式不是很熟悉的化,上面的LINQ語句還可以進(jìn)一步轉(zhuǎn)化成委托的形式。

 
 
 
  1. Func, bool> filter = delegate (string s) ...{return s.Length >=6;};   
  2. Func, string> extract = delegate (string s) ...{return s; };   
  3. Func, string> project = delegate (string s) ...{return s.ToUpper(); };   
  4. var items = names.Where(filter) .OrderBy(extract) .Select(project);  

有一個問題,我們會注意到items前面是用var做它的類型,那么有沒有提出這樣的疑問,這個var到底是什么類型呢?我們仔細(xì)看一下那個System.LINQ程序集,就會發(fā)現(xiàn)擴(kuò)轉(zhuǎn)方法返回的是IEnumerable 類型,一個泛型接口,沒錯var就是這個泛型接口。還有一個問題就是當(dāng)names滿足什么條件時,我們可以應(yīng)用LINQ表達(dá)式進(jìn)行查詢。這一點(diǎn)還要從那個程序集上仔細(xì)觀察。我們會發(fā)現(xiàn)有一個source參數(shù),根據(jù)擴(kuò)展方法的語法我們知道這個source參數(shù)就是調(diào)用了這個方法的對象。那么我們可以推斷出這個對象要能轉(zhuǎn)換成IEnumerable 。那什么類型可以成功轉(zhuǎn)換呢?很顯然只要實(shí)現(xiàn)了IEnumerable 這個泛型接口的類型都可以轉(zhuǎn)換。譬如數(shù)組類型,List ,等等。當(dāng)我們還可以自己定義類型只要實(shí)現(xiàn)了這個接口就可以用LINQ對這個類型進(jìn)行操作

這一次只是簡單的介紹一下LINQ,以后我們在具體的講一些應(yīng)用,不過從介紹中我們看到LINQ的一些強(qiáng)大功能。


當(dāng)前文章:System.LINQ程序集介紹
鏈接URL:http://www.5511xx.com/article/dhiejgp.html