信息
您所需的主题如下所示。但此主题未包含在此库中。

Enumerable.Select<TSource, TResult> 方法 (IEnumerable<TSource>, Func<TSource, TResult>)

2013/12/13

将序列中的每个元素投影到新表中。

Namespace:  System.Linq
程序集:  System.Core(位于 System.Core.dll 中)

public static IEnumerable<TResult> Select<TSource, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TResult> selector
)

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型: System.Collections.Generic.IEnumerable<TSource>
一个值序列,要对该序列调用转换函数。
selector
类型: System.Func<TSource, TResult>
应用于每个元素的转换函数。

返回值

类型: System.Collections.Generic.IEnumerable<TResult>
一个 IEnumerable<T>,其元素为对 source 的每个元素调用转换函数的结果。

用法说明

在 Visual Basic 和 C# 中,您可以对类型为 IEnumerable<TSource> 的任何对象调用此方法作为实例方法。使用实例方法语法来调用此方法时,忽略第一个参数。

异常条件
ArgumentNullException

sourceselectornull

此方法通过使用延迟执行实现。 即时返回值为一个对象,该对象存储执行操作所需的所有信息。 只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

此投影方法需要转换函数 selector,以为源序列 source 中的每个值生成一个值。 如果 selector 返回的值本身为一个集合,则由使用方手动遍历子序列。 在这种情况下,您的查询返回值的单个合并序列可能较好。 为此,可使用 SelectMany 方法代替 Select。 虽然 SelectMany 的用法与 Select 相似,但它的不同之处在于转换函数返回一个集合,此集合在返回之前由 SelectMany 进行了扩展。

在查询表达式语法中,select (Visual C#) 或 Select (Visual Basic) 子句转换为 Enumerable.Select 的调用。

下面的代码示例演示如何使用 Select<TSource, TResult>(IEnumerable<TSource>, Func<TSource, TResult>) 在值序列上进行投影。


      IEnumerable<int> squares =
          Enumerable.Range(1, 10).Select(x => x * x);

      foreach (int num in squares)
      {
         outputBlock.Text += num + "\n";
      }
      /*
       This code produces the following output:

       1
       4
       9
       16
       25
       36
       49
       64
       81
       100
      */



Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: