Enumerable.Select Enumerable.Select Enumerable.Select Enumerable.Select Method

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>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) 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>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) 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>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) 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.

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.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>) em uma sequência de valores de projeto 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.
MsgBox(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 imediata valor retornado é 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 é enumerado chamando-se suas GetEnumerator método diretamente ou usando 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 para processar.The first argument to selector represents the element to process. O segundo argumento para selector representa o índice baseado em zero do 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 estão em uma ordem conhecida e você deseja 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 que a função de transformação 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 retorna um valor que é uma coleção, é responsabilidade do consumidor para percorrer 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, talvez seja melhor para a sua consulta retornar uma única sequência conciliada de valores.In such a situation, it might be better for your query to return a single coalesced sequence of values. Para fazer isso, use o SelectMany método em vez de Select.To achieve this, use the SelectMany method instead of Select. Embora SelectMany funciona da mesma forma que Select, ele é diferente em que a função de transformação retorna uma coleção que, em seguida, é expandida por SelectMany antes de ser retornado.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.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) 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 Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) ao projeto 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.
MsgBox(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 imediata valor retornado é 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 é enumerado chamando-se suas GetEnumerator método diretamente ou usando 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 que a função de transformação 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 retorna um valor que é uma coleção, é responsabilidade do consumidor para percorrer 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, talvez seja melhor para a sua consulta retornar uma única sequência conciliada de valores.In such a situation, it might be better for your query to return a single coalesced sequence of values. Para fazer isso, use o SelectMany método em vez de Select.To achieve this, use the SelectMany method instead of Select. Embora SelectMany funciona da mesma forma que Select, ele é diferente em que a função de transformação retorna uma coleção que, em seguida, é expandida por SelectMany antes de ser retornado.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 (Visual c#) ou Select cláusula (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.

Veja também

Aplica-se a