天天看点

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 ,如需转载请自行联系原作者

继续阅读