Enumerable.Select Método

Definición

Proyecta cada elemento de una secuencia en un nuevo formulario.

Sobrecargas

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

Proyecta cada elemento de una secuencia en un nuevo formulario mediante la incorporación del índice del elemento.

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

Proyecta cada elemento de una secuencia en un nuevo formulario.

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

Proyecta cada elemento de una secuencia en un nuevo formulario mediante la incorporación del índice del 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

TSource

Tipo de los elementos de source.

TResult

Tipo del valor devuelto por selector.

Parámetros

source
IEnumerable<TSource>

Secuencia de valores en la que se va a invocar una función de transformación.

selector
Func<TSource,Int32,TResult>

Función de transformación que se va a aplicar a cada elemento de origen; el segundo parámetro de la función representa el índice del elemento de origen.

Devoluciones

IEnumerable<TResult>

cuyos IEnumerable<T> elementos son el resultado de invocar la función de transformación en cada elemento de source.

Excepciones

source o selector es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) para proyectar una secuencia de valores y usar el í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 }

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su método /> en C# o en Visual Basic.

Primer argumento que selector representa el elemento que se va a procesar. Segundo argumento para selector representar el índice de base cero de ese elemento en la secuencia de origen. Esto puede ser útil si los elementos están en un orden conocido y desea hacer algo con un elemento en un índice determinado, por ejemplo. También puede ser útil si desea recuperar el índice de uno o varios elementos.

Este método de proyección requiere la función de transformación, selector, para generar un valor para cada valor de la secuencia de origen, source. Si selector devuelve un valor que es una colección propiamente dicha, es necesario que el consumidor recorra manualmente las subsecuencias. En esta situación, podría ser mejor que la consulta devuelva una única secuencia de valores fusionada. Para lograrlo, use el SelectMany método en lugar de Select. Aunque SelectMany funciona de forma similar a Select, difiere en que la función de transformación devuelve una colección que luego se expande antes SelectMany de que se devuelva.

Se aplica a

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

Proyecta cada elemento de una secuencia en un nuevo formulario.

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

Tipo de los elementos de source.

TResult

Tipo del valor devuelto por selector.

Parámetros

source
IEnumerable<TSource>

Secuencia de valores en la que se va a invocar una función de transformación.

selector
Func<TSource,TResult>

Función de transformación que se va a aplicar a cada elemento.

Devoluciones

IEnumerable<TResult>

cuyos IEnumerable<T> elementos son el resultado de invocar la función de transformación en cada elemento de source.

Excepciones

source o selector es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) para proyectar en una secuencia 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

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su método /> en C# o en Visual Basic.

Este método de proyección requiere la función de transformación, selector, para generar un valor para cada valor de la secuencia de origen, source. Si selector devuelve un valor que es una colección propiamente dicha, es necesario que el consumidor recorra manualmente las subsecuencias. En esta situación, podría ser mejor que la consulta devuelva una única secuencia de valores fusionada. Para lograrlo, use el SelectMany método en lugar de Select. Aunque SelectMany funciona de forma similar a Select, difiere en que la función de transformación devuelve una colección que luego se expande antes SelectMany de que se devuelva.

En la sintaxis de expresión de consulta, una cláusula select (C#) o Select (Visual Basic) se traduce en una invocación de Select.

Consulte también

Se aplica a