Enumerable.Select Metoda

Definice

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

Přetížení

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

Každý prvek sekvence začlení do nového formuláře zahrnutím indexu elementu.

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>)

Zdroj:
Select.cs
Zdroj:
Select.cs
Zdroj:
Select.cs
Zdroj:
Select.cs
Zdroj:
Select.cs

Každý prvek sekvence začlení do nového formuláře zahrnutí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 prvků .source

TResult

Typ hodnoty vrácené selectorhodnotou .

Parametry

source
IEnumerable<TSource>

Posloupnost hodnot k 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 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 se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.

První argument selector představující prvek, který se má zpracovat. Druhý argument selector představující index založený na nule 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 , selectorvytvořit jednu hodnotu 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 přecházela dílčí pořadí ručně. V takové situaci může být lepší, aby dotaz vrátil jednu sekvenci sloučených hodnot. Chcete-li toho dosáhnout, použijte metodu SelectManySelectmísto . I když SelectMany funguje podobně Select, liší se v tom, že transformační funkce vrací kolekci, která se pak rozbalí před vrácením SelectMany .

Platí pro

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

Zdroj:
Select.cs
Zdroj:
Select.cs
Zdroj:
Select.cs
Zdroj:
Select.cs
Zdroj:
Select.cs

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é selectorhodnotou .

Parametry

source
IEnumerable<TSource>

Posloupnost hodnot k 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čte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.

Tato metoda projekce vyžaduje transformační funkci , selectorvytvořit jednu hodnotu 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 přecházela dílčí pořadí ručně. V takové situaci může být lepší, aby dotaz vrátil jednu sekvenci sloučených hodnot. Chcete-li toho dosáhnout, použijte metodu SelectManySelectmísto . I když SelectMany funguje podobně Select, liší se v tom, že transformační funkce vrací kolekci, která se pak rozbalí před vrácením SelectMany .

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

Viz také

Platí pro