<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【轉】【More Effective C#】IEnumerable和IQueryable的那點事

      IEnumerable,IQueryable之前世今生

        IEnumerable<T>在.Net2.0中我們已經很熟悉了。你想要利用Foreach迭代嗎?實現IEnumerable<T>吧!你想直接做為數據源綁定到控件嗎?使用IEnumerable吧!是的,只要是序列它都實現了IEnumerable<T>(.Net1.0下的序列類除外)。除了這些,LINQ的出現還賦予了IEnumerable<T>更強悍的功能。IQueryable<T>繼承IEnumerable<T>,詳細看IEnumerable<T>和IQueryable<T>這兩個API的簽名可以說非常相似,從某種意義上來說它們是可以互換的,但是卻不總是可以互相代替的。IEnumerable<T>和IQueryable<T>的行為有所不同,其性能方面也可能天差地別。例如:

      var q = from c in dbContext.Customers
      where c.City == "shenzhen"
      select c;
      var q
      = (from c in dbContext.Customers
      where c.City == "shenzhen"
      select c).AsEnumerable();

        這兩個查詢看起來幾乎一模一樣,查詢返回的結果也一樣,但他們的實現方式卻大相徑庭。第一個查詢使用了LINQ2SQL的處理方式,第二個查詢則使用了LINQ2Object處理。通過前面的學習我們知道,LINQ2Object的處理結果是把LINQ表達式映射成對應的委托,而LINQ2SQL則是保存了一系列的"步驟"---表達式樹的處理方式,兩者的區別簡單的理解就是LINQ2Object將數據存放在內存中而LINQ2SQL則是把數據存放在遠程的服務器中。

      場景模擬

        舉一個例子,現在有兩個水果批發商A,B..A除了是批發商自己還承包了幾個果場,自產自銷,B和幾個大型的果場合作,只做批發工作。每次客人來A訂貨,指定要什么貨物,A就可以立刻拿出,速度快服務佳,缺點是由于是自己的果場,那量肯定不大,而且品種不齊全。小作坊式的經營B呢?每次客戶訂單,B是先把客戶需要的貨物規格等記錄下來,一次性去各個果場取貨,這樣B的優點就是量大,品種多,但速度可能偏慢(收到貨的時間)。不過若B以A的銷售方式來銷售,那么B的效績肯定是讓人十分不滿意,工廠式的經營。

        總結之,IEnumerable<T>查詢必須在本地執行,并且執行查詢前我們必須把所有的數據加載到本地,而且更多的時候加載的數據有大量的數據是我們不需要的無效數據,但是我們卻不得不傳輸更多的數據,做更多的無用功。而IQueryable<T>卻總能只提供你所需要的數據,大大減少了數據的傳輸,這就好比我們在小作坊下訂單,小作坊老板跟我們說他的貨剛好比你所需要的多出一些,你只能要了它,不然剩下一點他不好賣等等,而大工廠卻不會出現這種狀況。

      個性要求

        雖說小作坊很多弊病,但有時候卻有著大工廠無法媲美的服務,假如你需要一種八種水果組合套餐,大工廠一般不會為你量身定做單對單服務,相反,小作坊客源有限,一般都會滿足你的個人需求。

        場景切換:在<<[More Effective C#]Lambda表達式優化>>里我們提到過LINQ2SQL中是不允許出現自定義方法的,這是由于LINQ2SQL的處理方式.詳見<<[More Effective C#]Lambda表達式優化>>,而LINQ2Object卻能很好的滿足我們自定義方法這個性化的要求。

        但是除了自定義方法還有一些內置的方法IEnumerable<T>和IQueryable<T>是同時支持的,例如常見的string類的操作方法substring、indexof等等。

      尾聲

            可能這個例子在這里有些牽強,但相信IEnumerable<T>和IQueryable<T>之間的區別不難理解。更多時候我們在查詢序列的時候要考慮到底是本地查詢好還是遠程查詢好,至于哪種查詢更好沒有絕對的說法,適合應用環境,已經能發揮最大效應的那就是最好的。

      注:本文轉自 http://www.dotblogs.com.tw/kongyiyun/archive/2010/10/22/18510.aspx

      posted @ 2011-08-05 17:57  artwl  閱讀(646)  評論(0)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 久久人人爽人人人人爽av| 疯狂做受xxxx高潮欧美日本| 免费无码一区无码东京热| 亚欧美闷骚院| 中文字幕一区日韩精品| 亚洲国产婷婷综合在线精品| 亚洲香蕉伊综合在人在线| 亚洲精品国产美女久久久| 在线无码av一区二区三区| 99精品国产一区二区三区| 中文字幕理伦午夜福利片| 亚洲一本二区偷拍精品| 精品综合久久久久久97| 亚洲福利精品一区二区三区| 色诱视频在线观看| 99久久99久久久精品久久| 久久九九久精品国产免费直播 | 国产精品亚洲二区在线播放| 亚洲制服无码一区二区三区| 欧洲精品色在线观看| 成人福利一区二区视频在线| 激情综合色五月丁香六月亚洲| 色一情一乱一区二区三区码| XXXXXHD亚洲日本HD| 亚洲V天堂V手机在线 | 日韩精品三区二区三区| 中文字幕国产在线精品| 国产精品日韩中文字幕| 亚洲精品国产综合麻豆久久99| 中文一区二区视频| 日本污视频在线观看| 男女做aj视频免费的网站| 日韩精品国产中文字幕| av色蜜桃一区二区三区| 人妻无码ΑV中文字幕久久琪琪布| 黄色特级片一区二区三区| 亚洲 a v无 码免 费 成 人 a v | av综合网男人的天堂| 国产精品色内内在线播放| 亚洲偷自拍国综合| 亚洲男女一区二区三区|