Ler em inglês

Compartilhar via


Enumerable.Select Método

Definição

Projeta cada elemento de uma sequência em um novo formulário.

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.

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

Projeta cada elemento de uma sequência em um novo formulário.

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

Origem:
Select.cs
Origem:
Select.cs
Origem:
Select.cs

Projeta cada elemento de uma sequência em um novo formulário, incorporando o índice do elemento.

C#
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,TResult> selector);

Parâmetros de tipo

TSource

O tipo dos elementos de source.

TResult

O tipo do valor retornado por selector.

Parâmetros

source
IEnumerable<TSource>

Uma sequência de valores na qual uma função de transformação será invocada.

selector
Func<TSource,Int32,TResult>

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.

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.

Exceções

source ou selector é null.

Exemplos

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

C#
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 }
*/

Comentários

Esse método é implementado usando a execução adiada. O valor retornado imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu GetEnumerator método diretamente ou usando foreach em C# ou For Each no Visual Basic.

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

Esse método de projeção requer a função de transformação, selector, para produzir um valor para cada valor na sequência de origem, source. Se selector retornar um valor que é uma coleção, cabe ao consumidor percorrer as subsequências manualmente. Nessa situação, pode ser melhor que sua consulta retorne uma única sequência de valores agrupada. Para conseguir isso, use o SelectMany método em vez de Select. Embora SelectMany funcione de forma semelhante a Select, ela difere porque a função de transformação retorna uma coleção que é expandida por SelectMany antes de ser retornada.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Origem:
Select.cs
Origem:
Select.cs
Origem:
Select.cs

Projeta cada elemento de uma sequência em um novo formulário.

C#
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TResult> selector);

Parâmetros de tipo

TSource

O tipo dos elementos de source.

TResult

O tipo do valor retornado por selector.

Parâmetros

source
IEnumerable<TSource>

Uma sequência de valores na qual uma função de transformação será invocada.

selector
Func<TSource,TResult>

Uma função de transformação a ser aplicada a cada elemento.

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.

Exceções

source ou selector é null.

Exemplos

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

C#
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
*/

Comentários

Esse método é implementado usando a execução adiada. O valor retornado imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu GetEnumerator método diretamente ou usando foreach em C# ou For Each no Visual Basic.

Esse método de projeção requer a função de transformação, selector, para produzir um valor para cada valor na sequência de origem, source. Se selector retornar um valor que é uma coleção, cabe ao consumidor percorrer as subsequências manualmente. Nessa situação, pode ser melhor que sua consulta retorne uma única sequência de valores agrupada. Para conseguir isso, use o SelectMany método em vez de Select. Embora SelectMany funcione de forma semelhante a Select, ela difere porque a função de transformação retorna uma coleção que é expandida por SelectMany antes de ser retornada.

Na sintaxe da expressão de consulta, uma select cláusula (C#) ou Select (Visual Basic) é convertida em uma invocação de Select.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0