天天看點

Enumerable.Select<TSource, TResult> 方法介紹

Enumerable.Select<TSource, TResult> 方法介紹

完整簽名為:

public static IEnumerable<TResult> Select<TSource, TResult>(

    this IEnumerable<TSource> source,

    Func<TSource, TResult> selector

)

注意以下幾點:

1,這是一個擴充方法,從IEnumerable<TSource>類型中擴充的。

2,Select泛型指定2個類型,TSource類型就是IEnumerable<TSource>中的類型,是以這個TSource類型已經不能亂寫,必須相容于IEnumerable<TSource>中元素的類型,亂寫會出錯。

3,TResult則是指,你想把TSource經過處理後,傳回來什麼值,這個值可以是任意值。

4,然後傳回的一個IEnumerable<TResult>類型,這個IEnumerable種放的元素就是TResult類型的,就是Select處理TSource後傳回的類型。

5,Select方法調用的實際上是一個委托,該委托Func<TSource, TResult>是微軟内部自帶的,參數為TSource, 傳回值TResult,就是用來處理IEnumerable中的元素,然後傳回另一種類型的元素到IEnumerable中去。是以Select中參數可以是委托類型,方法名,匿名委托,或者更加靈活的拉姆達表達式。

6,Select方法中的處理,都是延遲運作的。

舉例:

 var s= l.Select<Model, int>((m) => { 

                Console.WriteLine(m.no);

                return 0; });

           foreach(var i in s)

           {

           }

注意,如果foreach語句不運作的話,Console.WriteLine(m.no);這句話根本不會運作。直到要用到它的時候才運作。

7,此Select方法完成後的可以使用ToList轉換成List<TResult>類型的值。

<a href="http://down.51cto.com/data/2358505" target="_blank">附件:http://down.51cto.com/data/2358505</a>

本文轉自cnn23711151CTO部落格,原文連結:http://blog.51cto.com/cnn237111/606378 ,如需轉載請自行聯系原作者

繼續閱讀