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

System.LINQ程序集介紹

開發 后端
這里介紹System.LINQ程序集,以及介紹source參數,根據擴展方法的語法我們知道這個source參數就是調用了這個方法的對象。

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

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

下面看一個例子:

  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等單詞很熟悉,我們可以很輕松的像查詢數據庫一樣查詢某些數組。其實上述表達式等價于下面這樣的寫法:

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

那么我們為什么能在數組上應用這些方法呢,本來數組上沒有這些方法啊?回憶一下我們原來說過的內容,擴展方法,對,我們在這里看到擴展方法的用武之地了。而且我們也看到了Lambda表達式的應用使得語句更加簡潔,易懂。這些擴展方法定義在哪里呢?我們可以在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關鍵字,這些正是擴展方法的標志。若果我們對Lambda表達式不是很熟悉的化,上面的LINQ語句還可以進一步轉化成委托的形式。

  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到底是什么類型呢?我們仔細看一下那個System.LINQ程序集,就會發現擴轉方法返回的是IEnumerable類型,一個泛型接口,沒錯var就是這個泛型接口。還有一個問題就是當names滿足什么條件時,我們可以應用LINQ表達式進行查詢。這一點還要從那個程序集上仔細觀察。我們會發現有一個source參數,根據擴展方法的語法我們知道這個source參數就是調用了這個方法的對象。那么我們可以推斷出這個對象要能轉換成IEnumerable。那什么類型可以成功轉換呢?很顯然只要實現了IEnumerable這個泛型接口的類型都可以轉換。譬如數組類型,List,等等。當我們還可以自己定義類型只要實現了這個接口就可以用LINQ對這個類型進行操作

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

【編輯推薦】

  1. Linq匿名類型簡單概述
  2. Linq隨機讀取數據淺析
  3. Linq Lambda表達式全面分析
  4. Linq擴展方法簡單分析
  5. 初探Linq局部變量類型
責任編輯:佚名 來源: 百度空間
相關推薦

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基礎概念

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結果集形狀

2009-09-09 11:14:04

Linq多個結果集

2009-09-18 13:53:09

LINQ工具集

2013-08-27 10:20:35

JavaLINQLinq4j

2009-09-07 17:05:10

LINQ進行查詢

2009-09-07 17:46:18

LINQ高級特性

2009-09-10 14:02:08

LINQ ASP.NE

2009-09-14 14:17:11

Linq異常處理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线成人 | 羞羞的视频免费看 | 国产一区二区精华 | 亚洲一区av | 中文天堂在线观看 | 日本特黄a级高清免费大片 成年人黄色小视频 | av毛片在线免费观看 | 免费国产视频 | 日韩精品一区二区三区中文字幕 | 亚洲一区二区视频 | 中文字幕亚洲在线 | 久久久久国产 | 人人澡人人射 | 色爱综合 | 久久国产区 | 91福利网 | 久久免费精品视频 | 91热在线| 2021狠狠干 | 亚洲精品片| 日韩欧美福利视频 | 欧美精品一区三区 | 高清国产一区二区 | 国产精品亚洲片在线播放 | 涩涩视频在线观看 | 久久久91精品国产一区二区三区 | 免费黄网站在线观看 | 亚洲bt 欧美bt 日本bt | 国产精品一区二区不卡 | 亚洲国产精品99久久久久久久久 | 日本成人在线播放 | 美女天天干天天操 | 国产亚洲精品久久久久久豆腐 | 视频一区 亚洲 | 国产一二三视频在线观看 | 中文字幕视频在线 | 国产精品美女久久久 | 亚洲视频免费在线看 | 国产精品污污视频 | 在线看91 | 亚洲午夜精品视频 |