<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > c#教程 >
        • C#教程之C# Linq查詢操作符簡介

        本站最新發布   C#從入門到精通
        試聽地址  
        http://www.squ68.com/eschool/CSharpxin3721/

        1.簡介

        .net的設計者在類庫中定義了一系列的擴展方法來方便用戶操作集合對象。

        這些擴展方法構成了LINQ的查詢操作符。

        這一系列的擴展方法,比如:

        Where,Max,Select,Sum,Any,Average,All,Concat等

        都是針對IEnumerable的對象進行擴展的

        也就是說,只要實現了IEnumerable接口,就可以使用這些擴展方法

        2.實例

        <1>

          Where擴展方法,需要傳入一個Func<int,bool>類型的泛型委托

          這個泛型委托,需要一個int類型的輸入參數和一個布爾類型的返回值

          我們直接把a => { return a > 3; }這個lambda表達式傳遞給了Where方法

          a就是int類型的輸入參數,返回a是否大于3的結果。

        <2>

          Sum擴展方法計算了Where擴展方法返回的集合的和。

        關于泛型委托,可以參考我的另一篇文章:《轉》C# 委托基本介紹

        3.用Linq查詢表達式代替

          上面的代碼中,

        arr.Where(a => { return a > 3; }).Sum();
        

          這一句完全可以寫成如下代碼:

         (from v in arr where v > 3 select v).Sum();
        

          而且兩句代碼的執行細節是完全一樣的。

          第二句代碼更符合語義,更容易讀懂。

        4. 查詢操作符舉例

        4.1 All

        public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
        

        參數:需要傳遞一個帶有bool 返回類型的 Func委托

        返回值: 返回true-當所有元素都pass, 或者返回false

        例如:

        4.2 Any

        Any 不會返回任意一個source中的元素!

        public static bool Any<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
        

        返回值: 返回true- 如果source包括任意一個元素, 或者返回false

        例如:

         

        public static bool Any<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
        

        參數:需要傳遞一個帶有bool 返回類型的 Func委托

        返回值: 返回true-當其中任意一個元素滿足條件, 都不滿足則返回false

        例如:

        4.3 FirstOrDefault

        public static TSource FirstOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
        

        返回滿足條件的第一個element, 或者返回default element 如果沒有符合條件的element.

        傳遞參數是一個返回bool型的Func委托

        public static TSource FirstOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
        

        當source為空的時候返回默認值,反之返回第一個element。

         

        4.4 Contains

        public static bool Contains<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource value);
        

        如果source 包括value, 返回true, 反之返回false.

        (看上去是不是很眼熟?)

        4.5 ElementAt

        public static TSource ElementAt<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, int index);
        

        返回source序列中目標位置的元素

        4.6 ElementAtOrDefault

        public static TSource ElementAtOrDefault<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, int index);
        

        如果index超出范圍,返回默認的source,反之返回目標source。

        4.7 Max(此方法還有很多類似的不同參數類型的方法)

        public static float Max<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,Single> selector);
        

        返回最大值。

        下面例子中的Single使用Int32代替。

        public static TSource Max<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
        

        返回值:序列中最大的元素

        如果TSource實現了Icomparable<T>, 這個Max<TSource>(IEnumerable<TSource>)會使用這個實現去比較value。

        4.8 Min

        Min

        4.9 Sum

        Sum

        4.a Select

        Select

        4.b SelectMany

        SelectMany

        4.c Single

        Single

        4.d SingleOrDefault

        SingleOrDefault

        4.e Skip

        Skip

        4.f Take

        Take

        4.g TakeLast

        TakeLast

        4.h Concat

        Concat

        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看