Enumerable.Select メソッド

定義

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

オーバーロード

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

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

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

要素のインデックスを組み込むことにより、シーケンスの各要素を新しいフォームに射影します。

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

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

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Select(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TResult> ^ selector);
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TResult> selector);
static member Select : seq<'Source> * Func<'Source, 'Result> -> seq<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IEnumerable(Of TSource), selector As Func(Of TSource, TResult)) As IEnumerable(Of TResult)

型パラメーター

TSource

source の要素の型。

TResult

selector によって返される値の型。

パラメーター

source
IEnumerable<TSource>

変換関数を呼び出す対象となる値のシーケンス。

selector
Func<TSource,TResult>

各要素に適用する変換関数。

戻り値

IEnumerable<TResult>

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

例外

source または selectornull です。

次のコード例は、一連の値を投影するために使用 Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) する方法を示しています。

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

foreach (int num in squares)
{
    Console.WriteLine(num);
}
/*
 This code produces the following output:

 1
 4
 9
 16
 25
 36
 49
 64
 81
 100
*/
' Create a collection of sequential integers
' from 1 to 10 and project their squares.
Dim squares As IEnumerable(Of Integer) =
Enumerable.Range(1, 10).Select(Function(x) x * x)

Dim output As New System.Text.StringBuilder
For Each num As Integer In squares
    output.AppendLine(num)
Next

' Display the output.
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' 1
' 4
' 9
' 16
' 25
' 36
' 49
' 64
' 81
' 100

注釈

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

このプロジェクション メソッドでは、変換関数が、 selectorソース シーケンス source内の値ごとに 1 つの値を生成する必要があります。 それ自体がコレクションである値を返す場合 selector は、サブシーケンスを手動で走査するのはコンシューマーにかかっています。 このような状況では、クエリで 1 つの結合された値シーケンスを返す方が適している場合があります。 これを実現するには、代わりにSelectメソッドを使用しますSelectMany。 同様 SelectManySelect動作しますが、変換関数はコレクションを返し、そのコレクションが返される前に拡張される SelectMany 点で異なります。

クエリ式の構文で、 select (Visual C#) またはSelectの呼び出しに変換します (Visual Basic) 句Selectします。

こちらもご覧ください

適用対象

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

要素のインデックスを組み込むことにより、シーケンスの各要素を新しいフォームに射影します。

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Select(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, int, TResult> ^ selector);
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,TResult> selector);
static member Select : seq<'Source> * Func<'Source, int, 'Result> -> seq<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IEnumerable(Of TSource), selector As Func(Of TSource, Integer, TResult)) As IEnumerable(Of TResult)

型パラメーター

TSource

source の要素の型。

TResult

selector によって返される値の型。

パラメーター

source
IEnumerable<TSource>

変換関数を呼び出す対象となる値のシーケンス。

selector
Func<TSource,Int32,TResult>

各ソース要素に適用する変換関数。この関数の 2 つ目のパラメーターは、ソース要素のインデックスを表します。

戻り値

IEnumerable<TResult>

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

例外

source または selectornull です。

次のコード例では、一連の値を Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) 投影し、各要素のインデックスを使用する方法を示します。

string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

var query =
    fruits.Select((fruit, index) =>
                      new { index, str = fruit.Substring(0, index) });

foreach (var obj in query)
{
    Console.WriteLine("{0}", obj);
}

/*
 This code produces the following output:

 {index=0, str=}
 {index=1, str=b}
 {index=2, str=ma}
 {index=3, str=ora}
 {index=4, str=pass}
 {index=5, str=grape}
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Project each item in the array to an anonymous type
' that stores the item's index in the array and
' a substring of each item whose length is equal
' to the index position in the original array.
Dim query =
fruits.Select(Function(fruit, index) _
                  New With {index, .Str = fruit.Substring(0, index)})

Dim output As New System.Text.StringBuilder
For Each obj In query
    output.AppendLine(obj.ToString())
Next

' Display the output.
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' { index = 0, Str =  }
' { index = 1, Str = b }
' { index = 2, Str = ma }
' { index = 3, Str = ora }
' { index = 4, Str = pass }
' { index = 5, Str = grape }

注釈

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

処理する要素を selector 表す最初の引数。 ソース シーケンス内のその要素の 0 から始まるインデックスを表す 2 番目の引数 selector 。 これは、要素が既知の順序にあり、たとえば、特定のインデックスにある要素で何かを行う場合に役立ちます。 また、1 つ以上の要素のインデックスを取得する場合にも便利です。

このプロジェクション メソッドでは、変換関数が、 selectorソース シーケンス source内の値ごとに 1 つの値を生成する必要があります。 それ自体がコレクションである値を返す場合 selector は、サブシーケンスを手動で走査するのはコンシューマーにかかっています。 このような状況では、クエリで 1 つの結合された値シーケンスを返す方が適している場合があります。 これを実現するには、代わりにSelectメソッドを使用しますSelectMany。 同様 SelectManySelect動作しますが、変換関数はコレクションを返し、そのコレクションが返される前に拡張される SelectMany 点で異なります。

適用対象