Select (Cláusula, Visual Basic)Select Clause (Visual Basic)

Define el resultado de una consulta.Defines the result of a query.

SintaxisSyntax

Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]  

ElementosParts

var1
Opcional.Optional. Un alias que se puede utilizar para hacer referencia a los resultados de la expresión de columna.An alias that can be used to reference the results of the column expression.

fieldName1
Obligatorio.Required. Nombre del campo que se va a devolver en el resultado de la consulta.The name of the field to return in the query result.

ComentariosRemarks

Puede usar la cláusula Select para definir los resultados que se van a devolver desde una consulta.You can use the Select clause to define the results to return from a query. Esto le permite definir los miembros de un nuevo tipo anónimo creado por una consulta o establecer como destino los miembros de un tipo con nombre devuelto por una consulta.This enables you to either define the members of a new anonymous type that is created by a query, or to target the members of a named type that is returned by a query. La cláusula Select no es necesaria para una consulta.The Select clause is not required for a query. Si no se especifica ninguna cláusula de Select, la consulta devolverá un tipo basado en todos los miembros de las variables de rango identificadas para el ámbito actual.If no Select clause is specified, the query will return a type based on all members of the range variables identified for the current scope. Para obtener más información, vea Tipos anónimos.For more information, see Anonymous Types. Cuando una consulta crea un tipo con nombre, devolverá un resultado de tipo IEnumerable<T> donde T es el tipo creado.When a query creates a named type, it will return a result of type IEnumerable<T> where T is the created type.

La cláusula Select puede hacer referencia a cualquier variable del ámbito actual.The Select clause can reference any variables in the current scope. Esto incluye las variables de rango identificadas en la cláusula From (o en las cláusulas From).This includes range variables identified in the From clause (or From clauses). También incluye las nuevas variables creadas con un alias mediante las cláusulas Aggregate, Let, Group Byo Group Join, o bien las variables de una cláusula Select anterior en la expresión de consulta.It also includes any new variables created with an alias by the Aggregate, Let, Group By, or Group Join clauses, or variables from a previous Select clause in the query expression. La cláusula Select también puede incluir valores estáticos.The Select clause can also include static values. Por ejemplo, en el ejemplo de código siguiente se muestra una expresión de consulta en la que la cláusula Select define el resultado de la consulta como un nuevo tipo anónimo con cuatro miembros: ProductName, Price, Discounty DiscountedPrice.For example, the following code example shows a query expression in which the Select clause defines the query result as a new anonymous type with four members: ProductName, Price, Discount, and DiscountedPrice. Los valores de miembro ProductName y Price se toman de la variable de rango de producto que se define en la cláusula From.The ProductName and Price member values are taken from the product range variable that is defined in the From clause. El valor del miembro DiscountedPrice se calcula en la cláusula Let.The DiscountedPrice member value is calculated in the Let clause. El miembro Discount es un valor estático.The Discount member is a static value.

' 10% discount 
Dim discount_10 = 0.1
Dim priceList =
  From product In products
  Let DiscountedPrice = product.UnitPrice * (1 - discount_10)
  Select product.ProductName, Price = product.UnitPrice,
  Discount = discount_10, DiscountedPrice

La cláusula Select presenta un nuevo conjunto de variables de rango para las cláusulas de consulta posteriores, y las variables de rango anteriores ya no están en el ámbito.The Select clause introduces a new set of range variables for subsequent query clauses, and previous range variables are no longer in scope. La última cláusula Select de una expresión de consulta determina el valor devuelto de la consulta.The last Select clause in a query expression determines the return value of the query. Por ejemplo, la consulta siguiente devuelve el nombre de la compañía y el ID. de pedido de cada pedido de cliente cuyo total supera el 500.For example, the following query returns the company name and order ID for every customer order for which the total exceeds 500. La primera cláusula Select identifica las variables de rango para la cláusula Where y la segunda cláusula Select.The first Select clause identifies the range variables for the Where clause and the second Select clause. La segunda cláusula Select identifica los valores devueltos por la consulta como un nuevo tipo anónimo.The second Select clause identifies the values returned by the query as a new anonymous type.

Dim customerList = From cust In customers, ord In cust.Orders
                   Select Name = cust.CompanyName,
                          Total = ord.Total, ord.OrderID
                   Where Total > 500
                   Select Name, OrderID

Si la cláusula Select identifica un solo elemento que se va a devolver, la expresión de consulta devuelve una colección del tipo de ese único elemento.If the Select clause identifies a single item to return, the query expression returns a collection of the type of that single item. Si la cláusula Select identifica varios elementos para devolver, la expresión de consulta devuelve una colección de un nuevo tipo anónimo, basado en los elementos seleccionados.If the Select clause identifies multiple items to return, the query expression returns a collection of a new anonymous type, based on the selected items. Por ejemplo, las dos consultas siguientes devuelven colecciones de dos tipos diferentes basados en la cláusula Select.For example, the following two queries return collections of two different types based on the Select clause. La primera consulta devuelve una colección de nombres de compañía como cadenas.The first query returns a collection of company names as strings. La segunda consulta devuelve una colección de objetos Customer rellenados con los nombres e información de dirección de la compañía.The second query returns a collection of Customer objects populated with the company names and address information.

Dim customerNames = From cust In customers 
                    Select cust.CompanyName

Dim customerInfo As IEnumerable(Of Customer) =
  From cust In customers
  Select New Customer With {.CompanyName = cust.CompanyName,
                             .Address = cust.Address,
                             .City = cust.City,
                             .Region = cust.Region,
                             .Country = cust.Country}

EjemploExample

La siguiente expresión de consulta utiliza una cláusula From para declarar una variable de rango cust para la colección customers.The following query expression uses a From clause to declare a range variable cust for the customers collection. La cláusula Select selecciona el nombre del cliente y el valor del identificador y rellena las columnas CompanyName y CustomerID de la nueva variable de rango.The Select clause selects the customer name and ID value and populates the CompanyName and CustomerID columns of the new range variable. La instrucción For Each recorre en bucle cada objeto devuelto y muestra las columnas CompanyName y CustomerID de cada registro.The For Each statement loops over each returned object and displays the CompanyName and CustomerID columns for each record.

Sub SelectCustomerNameAndId(ByVal customers() As Customer)
  Dim nameIds = From cust In customers
                Select cust.CompanyName, cust.CustomerID
  For Each nameId In nameIds
    Console.WriteLine(nameId.CompanyName & ": " & nameId.CustomerID)
  Next
End Sub

Vea tambiénSee also