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 ,如需轉載請自行聯系原作者