成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

System.LINQ程序集是什么

這篇文章主要講解了“System.LINQ程序集是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“System.LINQ程序集是什么”吧!

成都創(chuàng)新互聯公司-專業(yè)網站定制、快速模板網站建設、高性價比睢寧縣網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式睢寧縣網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋睢寧縣地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

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

下面看一個例子:

class Program  ...{  static void Main(string[] args)  ...{  string[] names=...{"Everett", "Albert", "George", "Harris", "David" };  var items=from name in names  where name.Length>=6  orderby name  select name.ToUpper();  foreach(var item in items)  Console.WriteLine(item);  }  }

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

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

那么我們?yōu)槭裁茨茉跀到M上應用這些方法呢,本來數組上沒有這些方法啊?回憶一下我們原來說過的內容,擴展方法,對,我們在這里看到擴展方法的用武之地了。而且我們也看到了Lambda表達式的應用使得語句更加簡潔,易懂。這些擴展方法定義在哪里呢?我們可以在System.LINQ程序集里面看到這樣的定義:

namespace System.LINQ ...{   public static class Enumerable ...{   public static IEnumerable<T> Where<T>(   this IEnumerable<T> source, Func<T, bool> predicate) ...{    foreach (T item in source)   if (predicate(item)  )   yield return item;   }   }   }

這里我們可以清晰的看到許多this關鍵字,這些正是擴展方法的標志。若果我們對Lambda表達式不是很熟悉的化,上面的LINQ語句還可以進一步轉化成委托的形式。

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

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

感謝各位的閱讀,以上就是“System.LINQ程序集是什么”的內容了,經過本文的學習后,相信大家對System.LINQ程序集是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

文章名稱:System.LINQ程序集是什么
分享網址:http://jinyejixie.com/article30/jjejpo.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站營銷、網站內鏈、域名注冊、網站策劃、網站制作、全網營銷推廣

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站建設網站維護公司
永仁县| 舟山市| 隆子县| 九江市| 德昌县| 云安县| 安远县| 司法| 宜兰市| 辛集市| 司法| 平潭县| 临西县| 桃江县| 静海县| 栖霞市| 兴山县| 湾仔区| 老河口市| 桃园市| 仙游县| 遂宁市| 玉屏| 常州市| 蚌埠市| 平远县| 襄樊市| 安阳市| 南汇区| 林口县| 榆社县| 满洲里市| 崇义县| 赤城县| 永宁县| 高尔夫| 兴海县| 龙门县| 泰安市| 临潭县| 阆中市|