Enumerable.Select Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proyecta cada elemento de una secuencia a un nuevo formulario.
Sobrecargas
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) |
Proyecta cada elemento de una secuencia en un nuevo formulario incorporando el índice del elemento. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) |
Proyecta cada elemento de una secuencia a un nuevo formulario. |
Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)
- Source:
- Select.cs
- Source:
- Select.cs
- Source:
- Select.cs
Proyecta cada elemento de una secuencia en un nuevo formulario incorporando el í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 de valor devuelto por selector
.
Parámetros
- source
- IEnumerable<TSource>
Secuencia de valores sobre la que se va a invocar una función de transformación.
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<T> cuyos elementos son el resultado de invocar una 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 en 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 GetEnumerator
método o mediante foreach
en C# o For Each
en Visual Basic.
Primer argumento que selector
representa el elemento que se va a procesar. Segundo argumento que selector
representa 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 en sí misma una colección, el consumidor debe recorrer manualmente las subsecuencias. En tal situación, podría ser mejor que la consulta devuelva una única secuencia de valores combinado. Para ello, 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>)
- Source:
- Select.cs
- Source:
- Select.cs
- Source:
- Select.cs
Proyecta cada elemento de una secuencia a 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 de valor devuelto por selector
.
Parámetros
- source
- IEnumerable<TSource>
Secuencia de valores sobre 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<T> cuyos elementos son el resultado de invocar una 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 GetEnumerator
método o mediante foreach
en C# o For Each
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 en sí misma una colección, el consumidor debe recorrer manualmente las subsecuencias. En tal situación, podría ser mejor que la consulta devuelva una única secuencia de valores combinado. Para ello, 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 select
cláusula (C#) o Select
(Visual Basic) se traduce en una invocación de Select.