Compartir vía


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.

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ Select(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, int, TResult> ^> ^ selector);
public static System.Linq.IQueryable<TResult> Select<TSource,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,TResult>> selector);
static member Select : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, int, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IQueryable(Of TSource), selector As Expression(Of Func(Of TSource, Integer, TResult))) As IQueryable(Of TResult)

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.

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 }
*/
Dim fruits() As String = {"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.
Dim query = _
    fruits.AsQueryable() _
    .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 }

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

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.

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ Select(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TResult> ^> ^ selector);
public static System.Linq.IQueryable<TResult> Select<TSource,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TResult>> selector);
static member Select : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IQueryable(Of TSource), selector As Expression(Of Func(Of TSource, TResult))) As IQueryable(Of TResult)

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.

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
*/
Dim range As New List(Of Integer)(New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10})

' Project the square of each int value.
Dim squares As IEnumerable(Of Integer) = _
    range.AsQueryable().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

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