Enumerable.Select Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Проецирует каждый элемент последовательности в новую форму.
Перегрузки
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Проецирует каждый элемент последовательности в новую форму, добавляя индекс элемента. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Проецирует каждый элемент последовательности в новую форму. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
- Исходный код:
- Select.cs
- Исходный код:
- Select.cs
- Исходный код:
- Select.cs
Проецирует каждый элемент последовательности в новую форму, добавляя индекс элемента.
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)
Параметры типа
- TSource
Тип элементов source
.
- TResult
Тип значения, возвращаемого функцией selector
.
Параметры
- source
- IEnumerable<TSource>
Последовательность значений, для которых вызывается функция преобразования.
Функция преобразования, применяемая к каждому исходному элементу; второй параметр функции представляет индекс исходного элемента.
Возвращаемое значение
Объект IEnumerable<T>, элементы которого получены в результате вызова функции преобразования для каждого элемента последовательности source
.
Исключения
Параметр source
или selector
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) для проецирования последовательность значений и использовать индекс каждого элемента.
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 }
Комментарии
Этот метод реализуется с помощью отложенного выполнения. Немедленно возвращаемое значение — это объект, в котором хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется до тех пор, пока объект не будет перечислен либо путем вызова его GetEnumerator
метода напрямую, либо с помощью foreach
в C# или For Each
в Visual Basic.
Первый аргумент представляет selector
обрабатываемый элемент. Второй аргумент для selector
представляет отсчитываемый от нуля индекс этого элемента в исходной последовательности. Это может быть полезно, если элементы находятся в известном порядке и вы хотите сделать что-то с элементом по определенному индексу, например. Это также может быть полезно, если требуется получить индекс одного или нескольких элементов.
Для этого метода проекции требуется функция преобразования , selector
чтобы создать по одному значению для каждого значения в исходной последовательности source
. Если selector
возвращает значение, которое само по себе является коллекцией, потребитель может вручную пройти по вложенным значениям. В такой ситуации может быть лучше, чтобы запрос возвращал одну объединенную последовательность значений. Для этого используйте SelectMany метод вместо Select. Хотя SelectMany
работает аналогично Select
, она отличается тем, что функция преобразования возвращает коллекцию, которая затем расширяется SelectMany
до того, как она возвращается.
Применяется к
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
- Исходный код:
- Select.cs
- Исходный код:
- Select.cs
- Исходный код:
- Select.cs
Проецирует каждый элемент последовательности в новую форму.
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)
Параметры типа
- TSource
Тип элементов source
.
- TResult
Тип значения, возвращаемого функцией selector
.
Параметры
- source
- IEnumerable<TSource>
Последовательность значений, для которых вызывается функция преобразования.
- selector
- Func<TSource,TResult>
Функция преобразования, применяемая к каждому элементу.
Возвращаемое значение
Объект IEnumerable<T>, элементы которого получены в результате вызова функции преобразования для каждого элемента последовательности source
.
Исключения
Параметр source
или selector
имеет значение null
.
Примеры
В следующем примере кода показано, как использовать Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) для проецировать последовательность значений.
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
Комментарии
Этот метод реализуется с помощью отложенного выполнения. Немедленно возвращаемое значение — это объект, в котором хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется до тех пор, пока объект не будет перечислен либо путем вызова его GetEnumerator
метода напрямую, либо с помощью foreach
в C# или For Each
в Visual Basic.
Для этого метода проекции требуется функция преобразования , selector
чтобы создать по одному значению для каждого значения в исходной последовательности source
. Если selector
возвращает значение, которое само по себе является коллекцией, потребитель может вручную пройти по вложенным значениям. В такой ситуации может быть лучше, чтобы запрос возвращал одну объединенную последовательность значений. Для этого используйте SelectMany метод вместо Select. Хотя SelectMany
работает аналогично Select
, она отличается тем, что функция преобразования возвращает коллекцию, которая затем расширяется SelectMany
до того, как она возвращается.
В синтаксисе выражений select
Selectзапроса предложение (C#) или Select
(Visual Basic) преобразуется в вызов .