Enumerable.Select Método

Definição

Projeta cada elemento de uma sequência numa nova forma.

Sobrecargas

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

Projeta cada elemento de uma sequência numa nova forma incorporando o índice do elemento.

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

Projeta cada elemento de uma sequência numa nova forma.

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

Projeta cada elemento de uma sequência numa nova forma incorporando o índice do elemento.

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 Genérico

TSource

O tipo dos elementos de source.

TResult

O tipo do valor devolvido por selector.

Parâmetros

source
IEnumerable<TSource>

Uma sequência de valores para invocar uma função de transformação.

selector
Func<TSource,Int32,TResult>

Uma função de transformação para aplicar a cada elemento fonte; O segundo parâmetro da função representa o índice do elemento fonte.

Devoluções

IEnumerable<TResult>

E IEnumerable<T> cujos elementos são o resultado da invocação da função transformada em cada elemento de source.

Exceções

source ou selector é null.

Exemplos

O exemplo de código seguinte demonstra como projetar Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) sobre uma sequência de valores e usar o índice de cada elemento.

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 }

Observações

Este método é implementado através da execução diferida. O valor de retorno imediato é um objeto que armazena toda a informação necessária para realizar a ação. A consulta representada por este método não é executada até que o objeto seja enumerado, seja chamando diretamente o seu método GetEnumerator ou usando foreach em C# ou For Each em Visual Basic.

O primeiro argumento para selector representa o elemento a processar. O segundo argumento para selector representa o índice baseado em zero desse elemento na sequência de origem. Isto pode ser útil se os elementos estiverem numa ordem conhecida e quiseres fazer algo com um elemento num índice específico, por exemplo. Também pode ser útil se quiser recuperar o índice de um ou mais elementos.

Este método de projeção exige que a função de transformação, selector, produza um valor para cada valor na sequência de origem, source. Se selector devolver um valor que é ele próprio uma coleção, cabe ao consumidor percorrer manualmente as subsequências. Nessa situação, pode ser melhor que a sua consulta devolva uma única sequência coalescida de valores. Para conseguir isto, use o SelectMany método em vez de Select. Embora SelectMany funcione de forma semelhante a Select, difere pelo facto de a função transformar devolver uma coleção que depois é expandida por SelectMany antes de ser devolvida.

Aplica-se a

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

Projeta cada elemento de uma sequência numa nova forma.

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 Genérico

TSource

O tipo dos elementos de source.

TResult

O tipo do valor devolvido por selector.

Parâmetros

source
IEnumerable<TSource>

Uma sequência de valores para invocar uma função de transformação.

selector
Func<TSource,TResult>

Uma função de transformação para aplicar a cada elemento.

Devoluções

IEnumerable<TResult>

E IEnumerable<T> cujos elementos são o resultado da invocação da função transformada em cada elemento de source.

Exceções

source ou selector é null.

Exemplos

O exemplo de código seguinte demonstra como usar Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) para projetar sobre uma sequência de valores.

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

Observações

Este método é implementado através da execução diferida. O valor de retorno imediato é um objeto que armazena toda a informação necessária para realizar a ação. A consulta representada por este método não é executada até que o objeto seja enumerado, seja chamando diretamente o seu método GetEnumerator ou usando foreach em C# ou For Each em Visual Basic.

Este método de projeção exige que a função de transformação, selector, produza um valor para cada valor na sequência de origem, source. Se selector devolver um valor que é ele próprio uma coleção, cabe ao consumidor percorrer manualmente as subsequências. Nessa situação, pode ser melhor que a sua consulta devolva uma única sequência coalescida de valores. Para conseguir isto, use o SelectMany método em vez de Select. Embora SelectMany funcione de forma semelhante a Select, difere pelo facto de a função transformar devolver uma coleção que depois é expandida por SelectMany antes de ser devolvida.

Na sintaxe de expressão de consulta, uma cláusula select (C#) ou Select (Visual Basic) traduz-se numa invocação de Select.

Ver também

Aplica-se a