Enumerable.Select メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
シーケンスの各要素を新しいフォームに射影します。
オーバーロード
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
要素のインデックスを組み込むことにより、シーケンスの各要素を新しいフォームに射影します。 |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
シーケンスの各要素を新しいフォームに射影します。 |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
- ソース:
- Select.cs
- ソース:
- Select.cs
- ソース:
- Select.cs
要素のインデックスを組み込むことにより、シーケンスの各要素を新しいフォームに射影します。
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>
変換関数を呼び出す対象となる値のシーケンス。
戻り値
source
の各要素に対して変換関数を呼び出した結果として得られる要素を含む IEnumerable<T>。
例外
source
または selector
が null
です。
例
次のコード例では、 を使用 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
すか、C# For Each
または Visual Basic で を使用foreach
して列挙されるまで実行されません。
処理する要素を selector
表す最初の引数。 の 2 番目の引数 selector
は、ソース シーケンス内の要素の 0 から始まるインデックスを表します。 これは、要素が既知の順序にあり、たとえば、特定のインデックスにある要素を使用して何かを行う場合に便利です。 また、1 つ以上の要素のインデックスを取得する場合にも便利です。
このプロジェクション メソッドでは、変換関数 である が、 selector
ソース シーケンス source
内の値ごとに 1 つの値を生成する必要があります。 それ自体がコレクションである値を返す場合 selector
は、サブシーケンスを手動で走査するのはコンシューマー次第です。 このような状況では、クエリで 1 つの結合された値シーケンスを返す方が適している場合があります。 これを実現するには、 の代わりに SelectメソッドをSelectMany使用します。 は SelectMany
と同様に Select
機能しますが、変換関数がコレクションを返すという点で異なります。このコレクションは、返される前に によって SelectMany
展開されます。
適用対象
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
- ソース:
- Select.cs
- ソース:
- Select.cs
- ソース:
- Select.cs
シーケンスの各要素を新しいフォームに射影します。
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>
各要素に適用する変換関数。
戻り値
source
の各要素に対して変換関数を呼び出した結果として得られる要素を含む IEnumerable<T>。
例外
source
または selector
が null
です。
例
次のコード例では、 を使用 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
すか、C# For Each
または Visual Basic で を使用foreach
して列挙されるまで実行されません。
このプロジェクション メソッドでは、変換関数 である が、 selector
ソース シーケンス source
内の値ごとに 1 つの値を生成する必要があります。 それ自体がコレクションである値を返す場合 selector
は、サブシーケンスを手動で走査するのはコンシューマー次第です。 このような状況では、クエリで 1 つの結合された値シーケンスを返す方が適している場合があります。 これを実現するには、 の代わりに SelectメソッドをSelectMany使用します。 は SelectMany
と同様に Select
機能しますが、変換関数がコレクションを返すという点で異なります。このコレクションは、返される前に によって SelectMany
展開されます。
クエリ式の構文では、 select
(C#) 句または Select
(Visual Basic) 句が の Select呼び出しに変換されます。
こちらもご覧ください
適用対象
.NET