成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

介紹LINQ一些強(qiáng)大功能

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

LINQ有很多值得學(xué)習(xí)的地方,這里我們主要介紹LINQ,包括介紹Lambda表達(dá)式的應(yīng)用使得語句更加簡(jiǎn)潔,易懂等方面。

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

下面看一個(gè)例子,程序員就應(yīng)該拿代碼說話:

  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. }  

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

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

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

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

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

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

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

這一次只是簡(jiǎn)單的介紹LINQ,以后我們?cè)诰唧w的講一些應(yīng)用,不過從介紹中我們看到LINQ的一些強(qiáng)大功能。

【編輯推薦】

  1. LINQ to SQL Table淺談
  2. Linq語句問題的解決方法
  3. Ling to sql更新實(shí)體概述
  4. Linq實(shí)體繼承簡(jiǎn)單描述
  5. Linq Library概述
責(zé)任編輯:佚名 來源: 51cto.com
相關(guān)推薦

2009-09-08 10:35:24

LINQ技術(shù)

2010-03-04 13:36:55

openSUSE

2010-06-23 16:42:33

2010-03-26 13:39:28

Python標(biāo)準(zhǔn)庫

2010-01-22 17:48:46

VB.NET運(yùn)算符重載

2018-02-23 13:25:49

LinuxVim編輯器

2010-03-26 10:05:22

Python嵌入CC++

2009-08-26 18:15:39

ibmdwFlex

2010-08-06 14:23:25

FlexCSS

2010-09-17 12:39:51

JAVA反射機(jī)制

2009-12-24 11:13:21

2010-08-13 16:10:11

FlexCSS

2010-04-07 16:55:14

Unix命令

2010-04-27 17:58:17

Oracle 9i

2010-03-19 09:34:42

Cisco 2600模

2019-10-15 06:00:26

Google AnalAngularReact

2010-03-24 18:27:27

無線mesh網(wǎng)絡(luò)應(yīng)用

2011-05-23 18:06:24

站內(nèi)優(yōu)化SEO

2010-04-07 15:05:29

Oracle to_c

2022-05-24 12:50:58

Pandas索引代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费观看的av毛片的网站 | 日韩视频精品 | 国产精品久久久久久久久久了 | 请别相信他免费喜剧电影在线观看 | www.色五月.com| 亚洲福利一区二区 | 91高清在线视频 | 黄色三级免费 | 亚洲精品乱码久久久久久久久 | 亚洲区在线 | 国产视频久久久 | 久久精品视频网站 | 日韩欧美亚洲 | 久久com| 一级欧美一级日韩片 | 日韩在线不卡 | 91久久夜色精品国产网站 | 亚洲精品综合 | 日日综合 | 精品一区欧美 | 特级a欧美做爰片毛片 | 日本一区二区三区四区 | 免费网站国产 | 国产精品欧美一区二区 | 黄色一级视频 | 色本道 | 成人av在线大片 | 999精品在线观看 | 全免费a级毛片免费看视频免 | 亚洲一区二区三区在线视频 | 久久国产精品一区二区三区 | 521av网站| 日韩三级在线 | 日日夜夜精品视频 | 亚洲欧美日韩激情 | 欧美精品一级 | 91色视频在线观看 | 一区二区精品在线 | 久久在看 | 日本在线网站 | 国产三级在线观看播放 |