Enumerable.Select Método
Definição
Projeta cada elemento de uma sequência em um novo formulário.Projects each element of a sequence into a new form.
Sobrecargas
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Projeta cada elemento de uma sequência em um novo formulário, incorporando o índice do elemento.Projects each element of a sequence into a new form by incorporating the element's index. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Projeta cada elemento de uma sequência em um novo formulário.Projects each element of a sequence into a new form. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
Projeta cada elemento de uma sequência em um novo formulário, incorporando o índice do elemento.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)
Parâmetros de tipo
- TSource
O tipo dos elementos de source
.The type of the elements of source
.
- TResult
O tipo do valor retornado por selector
.The type of the value returned by selector
.
Parâmetros
- source
- IEnumerable<TSource>
Uma sequência de valores na qual uma função de transformação será invocada.A sequence of values to invoke a transform function on.
Uma função de transformação para aplicar a cada elemento de origem; o segundo parâmetro da função representa o índice do elemento de origem.A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
Retornos
- IEnumerable<TResult>
Um IEnumerable<T> cujos elementos são o resultado da invocação da função de transformação em cada elemento de source
.An IEnumerable<T> whose elements are the result of invoking the transform function on each element of source
.
Exceções
source
ou selector
é null
.source
or selector
is null
.
Exemplos
O exemplo de código a seguir demonstra como usar Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) o para projetar em uma sequência de valores e usar o índice de cada elemento.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.
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 }
Comentários
Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando o GetEnumerator
método diretamente ou usando o foreach
no Visual C# ou For Each
no 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.
O primeiro argumento para selector
representa o elemento a ser processado.The first argument to selector
represents the element to process. O segundo argumento para selector
representar o índice de base zero desse elemento na sequência de origem.The second argument to selector
represents the zero-based index of that element in the source sequence. Isso pode ser útil se os elementos estiverem em uma ordem conhecida e você desejar fazer algo com um elemento em um índice específico, por exemplo.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. Ele também pode ser útil se você quiser recuperar o índice de um ou mais elementos.It can also be useful if you want to retrieve the index of one or more elements.
Esse método de projeção requer a função Transform, selector
, para produzir um valor para cada valor na sequência de origem, source
.This projection method requires the transform function, selector
, to produce one value for each value in the source sequence, source
. Se selector
o retornar um valor que seja uma coleção em si, cabe ao consumidor atravessar as subsequências manualmente.If selector
returns a value that is itself a collection, it is up to the consumer to traverse the subsequences manually. Nessa situação, pode ser melhor para que sua consulta retorne uma única sequência de valores agrupados.In such a situation, it might be better for your query to return a single coalesced sequence of values. Para conseguir isso, use o SelectMany método em vez de Select .To achieve this, use the SelectMany method instead of Select. Embora SelectMany
o funcione de forma semelhante ao Select
, ele difere em que a função Transform retorna uma coleção que é então expandida pelo SelectMany
antes de ser retornada.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.
Aplica-se a
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)
Projeta cada elemento de uma sequência em um novo formulário.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)
Parâmetros de tipo
- TSource
O tipo dos elementos de source
.The type of the elements of source
.
- TResult
O tipo do valor retornado por selector
.The type of the value returned by selector
.
Parâmetros
- source
- IEnumerable<TSource>
Uma sequência de valores na qual uma função de transformação será invocada.A sequence of values to invoke a transform function on.
- selector
- Func<TSource,TResult>
Uma função de transformação a ser aplicada a cada elemento.A transform function to apply to each element.
Retornos
- IEnumerable<TResult>
Um IEnumerable<T> cujos elementos são o resultado da invocação da função de transformação em cada elemento de source
.An IEnumerable<T> whose elements are the result of invoking the transform function on each element of source
.
Exceções
source
ou selector
é null
.source
or selector
is null
.
Exemplos
O exemplo de código a seguir demonstra como usar o Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) para projetar em uma sequência de valores.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.
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' 1
' 4
' 9
' 16
' 25
' 36
' 49
' 64
' 81
' 100
Comentários
Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando o GetEnumerator
método diretamente ou usando o foreach
no Visual C# ou For Each
no 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.
Esse método de projeção requer a função Transform, selector
, para produzir um valor para cada valor na sequência de origem, source
.This projection method requires the transform function, selector
, to produce one value for each value in the source sequence, source
. Se selector
o retornar um valor que seja uma coleção em si, cabe ao consumidor atravessar as subsequências manualmente.If selector
returns a value that is itself a collection, it is up to the consumer to traverse the subsequences manually. Nessa situação, pode ser melhor para que sua consulta retorne uma única sequência de valores agrupados.In such a situation, it might be better for your query to return a single coalesced sequence of values. Para conseguir isso, use o SelectMany método em vez de Select .To achieve this, use the SelectMany method instead of Select. Embora SelectMany
o funcione de forma semelhante ao Select
, ele difere em que a função Transform retorna uma coleção que é então expandida pelo SelectMany
antes de ser retornada.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.
Na sintaxe de expressão de consulta, uma select
cláusula (Visual C#) ou Select
(Visual Basic) se traduz em uma invocação de Select .In query expression syntax, a select
(Visual C#) or Select
(Visual Basic) clause translates to an invocation of Select.
Confira também
- Cláusula select (Referência de C#)select clause (C# Reference)
- Cláusula Select (Visual Basic)Select Clause (Visual Basic)