Enumerable.Select Metoda

Definice

Projektuje každý prvek sekvence do nového formuláře.Projects each element of a sequence into a new form.

Přetížení

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

Projektuje každý prvek sekvence do nového formuláře zahrnutím indexu elementu.Projects each element of a sequence into a new form by incorporating the element's index.

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

Projektuje každý prvek sekvence do nového formuláře.Projects each element of a sequence into a new form.

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

Projektuje každý prvek sekvence do nového formuláře zahrnutím indexu elementu.Projects each element of a sequence into a new form by incorporating the element's index.

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.The type of the elements of source.

TResult

Typ hodnoty vrácené funkcí selector.The type of the value returned by selector.

Parametry

source
IEnumerable<TSource>

Sekvence hodnot, na kterých se má vyvolat funkce transformaceA sequence of values to invoke a transform function on.

selector
Func<TSource,Int32,TResult>

Funkce transformace, která se má použít u každého zdrojového elementu; druhý parametr funkce představuje index zdrojového elementu.A transform function to apply to each source element; the second parameter of the function represents the index of the source element.

Návraty

IEnumerable<TResult>

@No__t_0, jehož prvky jsou výsledkem vyvolání funkce transformace u každého prvku source.An IEnumerable<T> whose elements are the result of invoking the transform function on each element of source.

Výjimky

source nebo selector je null.source or selector is null.

Příklady

Následující příklad kódu ukazuje, jak použít Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) pro projekt na základě sekvence hodnot a použití indexu každého prvku.The following code example demonstrates how to use Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) to project over a sequence of values and use the index of each element.

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.
MsgBox(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 je implementována pomocí odloženého provedení.This method is implemented by using deferred execution. Okamžitá návratová hodnota je objekt, který ukládá všechny informace, které jsou požadovány k provedení této akce.The immediate return value is an object that stores all the information that is required to perform the action. Dotaz reprezentovaný touto metodou není proveden, dokud se nevytvoří výčet objektu buď voláním metody GetEnumerator přímo, nebo pomocí foreach v jazyce Visual C# nebo For Each v Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

První argument selector představuje prvek, který má být zpracován.The first argument to selector represents the element to process. Druhý argument pro selector představuje index založený na nule tohoto prvku ve zdrojové sekvenci.The second argument to selector represents the zero-based index of that element in the source sequence. To může být užitečné, pokud jsou prvky ve známém pořadí a chcete něco dělat s elementem na konkrétním indexu, například.This can be useful if the elements are in a known order and you want to do something with an element at a particular index, for example. Může být také užitečné, pokud chcete načíst index jednoho nebo více prvků.It can also be useful if you want to retrieve the index of one or more elements.

Tato metoda projekce vyžaduje funkci transformace, selector pro získání jedné hodnoty pro každou hodnotu ve zdrojové sekvenci source.This projection method requires the transform function, selector, to produce one value for each value in the source sequence, source. Pokud selector vrátí hodnotu, která je sama o kolekci, je až na příjemce, aby procházela dílčí sekvence ručně.If selector returns a value that is itself a collection, it is up to the consumer to traverse the subsequences manually. V takové situaci může být lepší, když váš dotaz vrátí jednu sloučených sekvenci hodnot.In such a situation, it might be better for your query to return a single coalesced sequence of values. Chcete-li toho dosáhnout, použijte metodu SelectMany místo Select.To achieve this, use the SelectMany method instead of Select. I když SelectMany funguje podobně jako Select, se liší v tom, že funkce transformace vrátí kolekci, která je poté rozbalena SelectMany před jejich vrácením.Although SelectMany works similarly to Select, it differs in that the transform function returns a collection that is then expanded by SelectMany before it is returned.

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

Projektuje každý prvek sekvence do nového formuláře.Projects each element of a sequence into a new form.

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.The type of the elements of source.

TResult

Typ hodnoty vrácené funkcí selector.The type of the value returned by selector.

Parametry

source
IEnumerable<TSource>

Sekvence hodnot, na kterých se má vyvolat funkce transformaceA sequence of values to invoke a transform function on.

selector
Func<TSource,TResult>

Transformační funkce, která má být použita pro každý prvek.A transform function to apply to each element.

Návraty

IEnumerable<TResult>

@No__t_0, jehož prvky jsou výsledkem vyvolání funkce transformace u každého prvku source.An IEnumerable<T> whose elements are the result of invoking the transform function on each element of source.

Výjimky

source nebo selector je null.source or selector is null.

Příklady

Následující příklad kódu ukazuje, jak použít Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) pro projekt na základě sekvence hodnot.The following code example demonstrates how to use Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) to project over a sequence of values.

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.
MsgBox(output.ToString())

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

Poznámky

Tato metoda je implementována pomocí odloženého provedení.This method is implemented by using deferred execution. Okamžitá návratová hodnota je objekt, který ukládá všechny informace, které jsou požadovány k provedení této akce.The immediate return value is an object that stores all the information that is required to perform the action. Dotaz reprezentovaný touto metodou není proveden, dokud se nevytvoří výčet objektu buď voláním metody GetEnumerator přímo, nebo pomocí foreach v jazyce Visual C# nebo For Each v Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Tato metoda projekce vyžaduje funkci transformace, selector pro získání jedné hodnoty pro každou hodnotu ve zdrojové sekvenci source.This projection method requires the transform function, selector, to produce one value for each value in the source sequence, source. Pokud selector vrátí hodnotu, která je sama o kolekci, je až na příjemce, aby procházela dílčí sekvence ručně.If selector returns a value that is itself a collection, it is up to the consumer to traverse the subsequences manually. V takové situaci může být lepší, když váš dotaz vrátí jednu sloučených sekvenci hodnot.In such a situation, it might be better for your query to return a single coalesced sequence of values. Chcete-li toho dosáhnout, použijte metodu SelectMany místo Select.To achieve this, use the SelectMany method instead of Select. I když SelectMany funguje podobně jako Select, se liší v tom, že funkce transformace vrátí kolekci, která je poté rozbalena SelectMany před jejich vrácením.Although SelectMany works similarly to Select, it differs in that the transform function returns a collection that is then expanded by SelectMany before it is returned.

V syntaxi výrazu dotazu se klauzule select (Visual C#) nebo Select (Visual Basic) překládá na vyvolání Select.In query expression syntax, a select (Visual C#) or Select (Visual Basic) clause translates to an invocation of Select.

Viz také

Platí pro