Enumerable.Select Metoda

Definice

Prodá jednotlivé prvky sekvence do nového formuláře.

Přetížení

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

Prodá jednotlivé prvky sekvence do nového formuláře.

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

Začlení každý prvek sekvence do nového formuláře zahrnutím indexu prvku.

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

Prodá jednotlivé prvky sekvence do nového formuláře.

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)

Parametry typu

TSource

Typ prvků .source

TResult

Typ hodnoty vrácené parametrem selector.

Parametry

source
IEnumerable<TSource>

Posloupnost hodnot pro vyvolání transformační funkce.

selector
Func<TSource,TResult>

Transformační funkce, která se použije pro každý prvek.

Návraty

IEnumerable<TResult>

Jejíž IEnumerable<T> prvky jsou výsledkem vyvolání transformační funkce na každém prvku .source

Výjimky

source nebo selector je null.

Příklady

Následující příklad kódu ukazuje, jak použít Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) k projektování přes posloupnost hodnot.

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

Poznámky

Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčítá buď voláním metody GetEnumerator přímo, nebo pomocí foreach v jazyce Visual C# nebo For Each v Visual Basic.

Tato metoda projekce vyžaduje transformační funkci , selectork vytvoření jedné hodnoty pro každou hodnotu ve zdrojové sekvenci , source. Pokud selector vrátí hodnotu, která je sama o sobě kolekcí, je až na příjemce, aby ručně přecházely podsekvence. V takové situaci může být vhodnější, aby dotaz vrátil jednu sekvenci hodnot. Chcete-li toho dosáhnout, použijte metodu SelectMany místo Select. I když SelectMany funguje podobně jako Select, liší se v tom, že transformační funkce vrátí kolekci, která se pak rozbalí SelectMany před vrácením.

V syntaxi výrazu dotazu se klauzule select (Visual C#) nebo Select (Visual Basic) překládá na vyvolání Select.

Viz také

Platí pro

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

Začlení každý prvek sekvence do nového formuláře zahrnutím indexu prvku.

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)

Parametry typu

TSource

Typ prvků .source

TResult

Typ hodnoty vrácené parametrem selector.

Parametry

source
IEnumerable<TSource>

Posloupnost hodnot pro vyvolání transformační funkce.

selector
Func<TSource,Int32,TResult>

Transformační funkce, která se použije pro každý zdrojový prvek; druhý parametr funkce představuje index zdrojového prvku.

Návraty

IEnumerable<TResult>

Jejíž IEnumerable<T> prvky jsou výsledkem vyvolání transformační funkce na každém prvku .source

Výjimky

source nebo selector je null.

Příklady

Následující příklad kódu ukazuje, jak použít Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) k projektování přes posloupnost hodnot a použít index jednotlivých prvků.

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 }

Poznámky

Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčítá buď voláním metody GetEnumerator přímo, nebo pomocí foreach v jazyce Visual C# nebo For Each v Visual Basic.

První argument představující prvek, který selector se má zpracovat. Druhý argument selector představující nulový index tohoto prvku ve zdrojové sekvenci. To může být užitečné, pokud jsou prvky ve známém pořadí a chcete něco udělat s prvkem v určitém indexu, například. Může být také užitečné, pokud chcete načíst index jednoho nebo více prvků.

Tato metoda projekce vyžaduje transformační funkci , selectork vytvoření jedné hodnoty pro každou hodnotu ve zdrojové sekvenci , source. Pokud selector vrátí hodnotu, která je sama o sobě kolekcí, je až na příjemce, aby ručně přecházely podsekvence. V takové situaci může být vhodnější, aby dotaz vrátil jednu sekvenci hodnot. Chcete-li toho dosáhnout, použijte metodu SelectMany místo Select. I když SelectMany funguje podobně jako Select, liší se v tom, že transformační funkce vrátí kolekci, která se pak rozbalí SelectMany před vrácením.

Platí pro