Leer en inglés

Compartir a través de


Queryable.Select Método

Definición

Proyecta cada elemento de una secuencia a un nuevo formulario.

Sobrecargas

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>)

Proyecta cada elemento de una secuencia en un nuevo formulario incorporando el índice del elemento.

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>)

Proyecta cada elemento de una secuencia a un nuevo formulario.

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Proyecta cada elemento de una secuencia en un nuevo formulario incorporando el índice del elemento.

C#
public static System.Linq.IQueryable<TResult> Select<TSource,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,TResult>> selector);

Parámetros de tipo

TSource

Tipo de los elementos de source.

TResult

Tipo del valor devuelto por la función representada por selector.

Parámetros

source
IQueryable<TSource>

Secuencia de valores que se va a proyectar.

selector
Expression<Func<TSource,Int32,TResult>>

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

Devoluciones

IQueryable<TResult>

IQueryable<T> cuyos elementos son el resultado de invocar una función de proyecció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>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) para proyectar en una secuencia de valores y usar el índice de cada elemento en el formulario proyectado.

C#
string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

// Project an anonymous type that contains the
// index of the string in the source array, and
// a string that contains the same number of characters
// as the string's index in the source array.
var query =
    fruits.AsQueryable()
    .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 }
*/

Comentarios

Este método tiene al menos un parámetro de tipo cuyo argumento de tipo Expression<TDelegate> es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>

El Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) método genera un MethodCallExpression objeto que representa llamarse Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionCreateQuery(Expression) método del IQueryProvider representado por la Provider propiedad del source parámetro .

El comportamiento de la consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,Int32,TResult>>) depende de la implementación del tipo del source parámetro. El comportamiento esperado es que invoca selector en cada elemento de source para proyectarlo en un formato diferente.

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.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 2.0, 2.1
UWP 10.0

Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Proyecta cada elemento de una secuencia a un nuevo formulario.

C#
public static System.Linq.IQueryable<TResult> Select<TSource,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TResult>> selector);

Parámetros de tipo

TSource

Tipo de los elementos de source.

TResult

Tipo del valor devuelto por la función representada por selector.

Parámetros

source
IQueryable<TSource>

Secuencia de valores que se va a proyectar.

selector
Expression<Func<TSource,TResult>>

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

Devoluciones

IQueryable<TResult>

IQueryable<T> cuyos elementos son el resultado de invocar una función de proyecció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>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) para proyectar en una secuencia de valores.

C#
List<int> range =
    new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Project the square of each int value.
IEnumerable<int> squares =
    range.AsQueryable().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
*/

Comentarios

Este método tiene al menos un parámetro de tipo cuyo argumento de tipo Expression<TDelegate> es uno de los Func<T,TResult> tipos. Para estos parámetros, puede pasar una expresión lambda y se compilará en .Expression<TDelegate>

El Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) método genera un MethodCallExpression objeto que representa llamarse Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpressionCreateQuery(Expression) método del IQueryProvider representado por la Provider propiedad del source parámetro .

El comportamiento de la consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) depende de la implementación del tipo del source parámetro. El comportamiento esperado es que invoca selector en cada elemento de source para proyectarlo en un formato diferente.

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.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 2.0, 2.1
UWP 10.0