Enumerable.Select Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Projektuje każdy element sekwencji w nowym formularzu.
Przeciążenia
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Projektuje każdy element sekwencji w nowym formularzu, dołączając indeks elementu. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Projektuje każdy element sekwencji w nowym formularzu. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
- Źródło:
- Select.cs
- Źródło:
- Select.cs
- Źródło:
- Select.cs
Projektuje każdy element sekwencji w nowym formularzu, dołączając indeks 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ów elementu source
.
- TResult
Typ wartości zwróconej przez selector
.
Parametry
- source
- IEnumerable<TSource>
Sekwencja wartości do wywołania funkcji transform na.
Funkcja przekształcania, która ma być stosowana do każdego elementu źródłowego; drugi parametr funkcji reprezentuje indeks elementu źródłowego.
Zwraca
Element IEnumerable<T> , którego elementy są wynikiem wywołania funkcji transform na każdym elemecie source
.
Wyjątki
source
lub selector
to null
.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) metody do tworzenia projektu w sekwencji wartości i używania indeksu każdego elementu.
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 }
Uwagi
Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony, wywołując metodę GetEnumerator
bezpośrednio lub używając w foreach
języku C# lub For Each
w Visual Basic.
Pierwszy argument selector
reprezentujący element do przetworzenia. Drugi argument selector
reprezentujący indeks zerowy tego elementu w sekwencji źródłowej. Może to być przydatne, jeśli elementy są w znanej kolejności i chcesz zrobić coś z elementem w określonym indeksie, na przykład. Może to być również przydatne, jeśli chcesz pobrać indeks jednego lub większej liczby elementów.
Ta metoda projekcji wymaga funkcji transform, selector
, aby wygenerować jedną wartość dla każdej wartości w sekwencji źródłowej . source
Jeśli selector
zwraca wartość, która sama jest kolekcją, do konsumenta należy ręczne przechodzenie podsekwencjonowania. W takiej sytuacji może być lepiej, aby zapytanie zwróciło pojedynczą sekwencję wartości. Aby to osiągnąć, użyj SelectMany metody zamiast Select. Mimo SelectMany
że działa podobnie do Select
, różni się w tym, że funkcja transform zwraca kolekcję, która jest następnie rozszerzana przed SelectMany
zwróceniem.
Dotyczy
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
- Źródło:
- Select.cs
- Źródło:
- Select.cs
- Źródło:
- Select.cs
Projektuje każdy element sekwencji w nowym formularzu.
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ów elementu source
.
- TResult
Typ wartości zwróconej przez selector
.
Parametry
- source
- IEnumerable<TSource>
Sekwencja wartości do wywołania funkcji transform na.
- selector
- Func<TSource,TResult>
Funkcja transformacji do zastosowania do każdego elementu.
Zwraca
Element IEnumerable<T> , którego elementy są wynikiem wywołania funkcji transform na każdym elemecie source
.
Wyjątki
source
lub selector
to null
.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) metody do tworzenia projektu w sekwencji wartości.
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
Uwagi
Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony, wywołując metodę GetEnumerator
bezpośrednio lub używając w foreach
języku C# lub For Each
w Visual Basic.
Ta metoda projekcji wymaga funkcji transform, selector
, aby wygenerować jedną wartość dla każdej wartości w sekwencji źródłowej . source
Jeśli selector
zwraca wartość, która sama jest kolekcją, do konsumenta należy ręczne przechodzenie podsekwencjonowania. W takiej sytuacji może być lepiej, aby zapytanie zwróciło pojedynczą sekwencję wartości. Aby to osiągnąć, użyj SelectMany metody zamiast Select. Mimo SelectMany
że działa podobnie do Select
, różni się w tym, że funkcja transform zwraca kolekcję, która jest następnie rozszerzana przed SelectMany
zwróceniem.
W składni wyrażenia zapytania klauzula select
(C#) lub Select
(Visual Basic) tłumaczy się na wywołanie Select.