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
- Исходный код:
- 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
- Исходный код:
- 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 (C#) или Select (Visual Basic) преобразует вызов Select.