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