Select (Cláusula, Visual Basic)

Actualización: noviembre 2007

Define el resultado de una consulta.

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

Partes

  • var1
    Opcional. Alias que se puede usar para hacer referencia a los resultados de la expresión de columna.

  • fieldName1
    Necesario. Nombre del campo que se va a devolver en el resultado de la consulta.

Comentarios

Puede usar la cláusula Select para definir los resultados que se van a devolver desde una consulta. De esta forma, puede definir los miembros de un nuevo tipo anónimo creado por una consulta o destinar los miembros de un tipo con nombre devuelto por una consulta. No se requiere la cláusula Select para una consulta. Si no se especifica ninguna cláusula Select, la consulta devolverá un tipo basado en todos los miembros de las variables de rango identificado para el ámbito actual. Para obtener más información, consulte Tipos anónimos. Cuando una consulta crea un tipo con nombre, devolverá un resultado de tipo IEnumerable<T> donde T es el tipo creado.

La cláusula Select puede hacer referencia a cualquier variable del ámbito actual. Se incluyen las variables de rango identificado en la cláusula From (o cláusulas From). También se incluyen cualquier variable nueva creada con un alias por las cláusulas Aggregate, Let, Group By o Group Join o las variables de una cláusula Select anterior de la expresión de consulta. La cláusula Select también puede incluir valores estáticos. Por ejemplo, el ejemplo de código siguiente muestra una expresión de consulta en la que la cláusula Select define el resultado de la consulta como nuevo tipo anónimo con cuatro miembros: ProductName, Price, Discount y DiscountedPrice. Los valores de los miembros ProductName y Price se toman de la variable de rango de producto definida en la cláusula From. El valor del miembro DiscountedPrice se calcula en la cláusula Let. El miembro Discount es un valor estático.

' 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 subsiguientes y las variables de rango anteriores ya no están en el ámbito. La última cláusula Select de una expresión de consulta determina el valor devuelto de la consulta. Por ejemplo, la consulta siguiente devuelve el nombre de la compañía y el identificador de pedido de cada pedido del cliente para el que el total supere 500. La primera cláusula Select identifica las variables de rango para la cláusula Where y la segunda cláusula Select. La segunda cláusula Select identifica los valores devueltos por la consulta como nuevo tipo anónimo.

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 elemento único. Si la cláusula Select identifica varios elementos que se van a devolver, la expresión de consulta devuelve una colección de un nuevo tipo anónimo, basado en los elementos seleccionados. Por ejemplo, las dos consultas siguientes devuelven las colecciones de dos tipos diferentes basadas en la cláusula Select. La primera consulta devuelve una colección de nombres de compañía como cadenas. La segunda consulta devuelve una colección de objetos Customer rellenados con los nombres y la información de dirección de las compañías.

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}

Ejemplo

La siguiente expresión de consulta usa una cláusula From para declarar una variable de rango cust de la colección customers. La cláusula Select selecciona el nombre del cliente y el valor de identificación y rellena las columnas Name e ID de la nueva variable de rango. La instrucción For Each crea un bucle en cada objeto devuelto y muestra las columnas Name y ID de cada registro.

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én

Conceptos

Introducción a LINQ en Visual Basic

Tipos anónimos

Referencia

From (Cláusula, Visual Basic)

Where (Cláusula, Visual Basic)

Order By (Cláusula, Visual Basic)

Otros recursos

Consultas (Visual Basic)