Enumerable.Select Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Promítá každý prvek sekvence do nového formuláře.
Přetížení
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Promítá každý prvek sekvence do nové podoby začleněním indexu elementu. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Promítá každý prvek sekvence do nového formuláře. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
- Zdroj:
- Select.cs
- Zdroj:
- Select.cs
- Zdroj:
- Select.cs
Promítá každý prvek sekvence do nové podoby začleněním indexu elementu.
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 elementů .source
- TResult
Typ hodnoty vrácené nástrojem selector
.
Parametry
- source
- IEnumerable<TSource>
Posloupnost hodnot pro vyvolání transformační funkce.
Transformační funkce, která se má použít pro každý zdrojový prvek; druhý parametr funkce představuje index elementu source.
Návraty
Objekt IEnumerable<T> , jehož elementy jsou výsledkem vyvolání transformační funkce u každého prvku objektu 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 promítání přes posloupnost hodnot a použití indexu každého prvku.
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 není proveden, dokud objekt není výčet buď voláním jeho GetEnumerator
metody přímo, nebo pomocí foreach
v jazyce C# nebo For Each
v jazyce Visual Basic.
První argument selector
představuje prvek, který se má zpracovat. Druhý argument selector
představuje 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 elementem 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 , selector
která vytvoří jednu hodnotu pro každou hodnotu ve zdrojové sekvenci, source
. Pokud selector
vrátí hodnotu, která je sama o sobě kolekcí, je na spotřebiteli, aby dílčí posloupnosti přecházely ručně. V takové situaci může být pro váš dotaz lepší vrátit jednu sloučenou sekvenci hodnot. Chcete-li toho dosáhnout, použijte SelectMany místo metody metodu Select. I když SelectMany
funguje podobně Select
jako , liší se v tom, že transformační funkce vrátí kolekci, která se před vrácením rozbalí o SelectMany
.
Platí pro
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
- Zdroj:
- Select.cs
- Zdroj:
- Select.cs
- Zdroj:
- Select.cs
Promítá každý prvek 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 elementů .source
- TResult
Typ hodnoty vrácené nástrojem selector
.
Parametry
- source
- IEnumerable<TSource>
Posloupnost hodnot pro vyvolání transformační funkce.
- selector
- Func<TSource,TResult>
Transformační funkce, která se má použít pro každý prvek.
Návraty
Objekt IEnumerable<T> , jehož elementy jsou výsledkem vyvolání transformační funkce u každého prvku objektu 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 promítání na sekvenci 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 není proveden, dokud objekt není výčet buď voláním jeho GetEnumerator
metody přímo, nebo pomocí foreach
v jazyce C# nebo For Each
v jazyce Visual Basic.
Tato metoda projekce vyžaduje transformační funkci , selector
která vytvoří jednu hodnotu pro každou hodnotu ve zdrojové sekvenci, source
. Pokud selector
vrátí hodnotu, která je sama o sobě kolekcí, je na spotřebiteli, aby dílčí posloupnosti přecházely ručně. V takové situaci může být pro váš dotaz lepší vrátit jednu sloučenou sekvenci hodnot. Chcete-li toho dosáhnout, použijte SelectMany místo metody metodu Select. I když SelectMany
funguje podobně Select
jako , liší se v tom, že transformační funkce vrátí kolekci, která se před vrácením rozbalí o SelectMany
.
V syntaxi výrazu select
dotazu se klauzule (C#) nebo Select
(Visual Basic) překládá na vyvolání výrazu Select.