このトピックはまだ評価されていません - このトピックを評価する

Enumerable.Select<TSource, TResult> メソッド (IEnumerable<TSource>, Func<TSource, TResult>)

2013/12/12

シーケンスの各要素を新しいフォームに投影します。

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>
source の各要素に対して変換関数を呼び出した結果として得られる要素を含む IEnumerable<T>

使用上の注意

Visual Basic および C# では、このメソッドを、IEnumerable<TSource> 型の任意のオブジェクトのインスタンス メソッドとして呼び出すことができます。インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。
例外条件
ArgumentNullException

source または selectornull です。

このメソッドは遅延実行を使用して実装されます。アクションの実行に必要なすべての情報を格納するオブジェクトがすぐに返されます。このメソッドで表されるクエリは、オブジェクトの GetEnumerator メソッドを直接呼び出すか、または Visual C# の foreach または Visual Basic の For Each を使用してオブジェクトが列挙されるまで、実行されません。

この投影メソッドには、ソース シーケンス source の各値に対して値を 1 つ生成するために、変換関数 selector が必要です。selector がそれ自体がコレクションである値を返す場合、サブシーケンスを手動で検討するかどうかはコンシューマーの判断によります。こうした状況では、クエリによって値の結合された 1 つのシーケンスを返す方が適しています。これを行うには、Select ではなく SelectMany メソッドを使用します。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

表示:
© 2014 Microsoft. All rights reserved.