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

System.LINQ程序集介紹

開發(fā) 后端
這里介紹System.LINQ程序集,以及介紹source參數(shù),根據(jù)擴(kuò)展方法的語法我們知道這個source參數(shù)就是調(diào)用了這個方法的對象。

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

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ù)組上沒有這些方法???回憶一下我們原來說過的內(nèi)容,擴(kuò)展方法,對,我們在這里看到擴(kuò)展方法的用武之地了。而且我們也看到了Lambda表達(dá)式的應(yīng)用使得語句更加簡潔,易懂。這些擴(kuò)展方法定義在哪里呢?我們可以在System.LINQ程序集里面看到這樣的定義:

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

這里我們可以清晰的看到許多this關(guān)鍵字,這些正是擴(kuò)展方法的標(biāo)志。若果我們對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);  

有一個問題,我們會注意到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)大功能。

【編輯推薦】

  1. Linq匿名類型簡單概述
  2. Linq隨機(jī)讀取數(shù)據(jù)淺析
  3. Linq Lambda表達(dá)式全面分析
  4. Linq擴(kuò)展方法簡單分析
  5. 初探Linq局部變量類型
責(zé)任編輯:佚名 來源: 百度空間
相關(guān)推薦

2009-09-11 09:22:14

System.Linq

2009-09-15 10:34:32

System.Data

2009-09-15 17:16:58

LINQ查詢操作符

2009-08-27 10:14:04

LINQ基礎(chǔ)概念

2009-09-08 10:50:20

2009-09-08 13:07:15

介紹Linq to S

2009-09-16 10:38:43

LINQ查詢

2009-09-11 09:41:19

LINQ to SQL

2009-09-10 17:30:15

LINQ Where子

2009-08-13 11:01:32

LINQPadLINQ工具

2009-09-09 14:20:49

LINQ To Luc

2009-09-18 09:25:06

LINQ Framew

2009-09-09 10:58:58

Linq結(jié)果集形狀

2009-09-09 11:14:04

Linq多個結(jié)果集

2009-09-18 13:53:09

LINQ工具集

2013-08-27 10:20:35

JavaLINQLinq4j

2009-09-07 17:05:10

LINQ進(jìn)行查詢

2009-09-07 17:46:18

LINQ高級特性

2009-09-10 14:02:08

LINQ ASP.NE

2009-09-15 09:39:38

LINQ查詢架構(gòu)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美h视频 | 欧美日韩国产一区二区三区 | 天天干在线播放 | 国产在线视频99 | 亚洲成av片人久久久 | 欧美日韩亚洲国产综合 | 91看片在线 | 麻豆精品国产免费 | 天天看逼| 91精品综合久久久久久五月天 | 欧美综合一区 | 午夜在线影院 | 亚洲欧洲日韩 | 91精品国产自产在线老师啪 | 欧美日韩电影一区二区 | 日韩成人精品在线观看 | 亚洲国产精品一区二区第一页 | 国产精品久久久久久 | 蜜桃黄网| 欧美日韩精品在线一区 | 成人国内精品久久久久一区 | 成年人免费在线视频 | 国产在线一区二区三区 | 精品免费国产一区二区三区 | 欧美日韩国产精品一区 | 亚洲91精品 | 国产精品久久 | 免费一级黄| 精品在线观看一区 | 国产日韩欧美在线观看 | 国产十日韩十欧美 | 日本不卡视频在线播放 | 日本高清视频在线播放 | 亚洲精品在线观看视频 | 91久久精品日日躁夜夜躁国产 | 免费a级毛片在线播放 | 久久亚| 91精品国产91久久久久久 | 91网视频 | 久久久国产精品 | 国产精品视频一区二区三区四蜜臂 |