Cláusula Select (Visual Basic)
Define o resultado de uma consulta.
Sintaxe
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Partes
var1
Opcional. Um alias que pode ser usado para fazer referência aos resultados da expressão de coluna.
fieldName1
Obrigatório. O nome do campo a ser retornado no resultado da consulta.
Observações
Você pode usar a Select
cláusula para definir os resultados a serem retornados de uma consulta. Isso permite que você defina os membros de um novo tipo anônimo criado por uma consulta ou direcione os membros de um tipo nomeado retornado por uma consulta. A Select
cláusula não é necessária para uma consulta. Se nenhuma Select
cláusula for especificada, a consulta retornará um tipo com base em todos os membros das variáveis de intervalo identificadas para o escopo atual. Para obter mais informações, consulte Tipos anônimos. Quando uma consulta cria um tipo nomeado, ela retornará um resultado do tipo IEnumerable<T> onde T
é o tipo criado.
A Select
cláusula pode fazer referência a quaisquer variáveis no âmbito atual. Isso inclui variáveis de From
intervalo identificadas na cláusula (ou From
cláusulas). Ele também inclui quaisquer novas variáveis criadas com um alias pelas Aggregate
cláusulas , Let
, Group By
, ou Group Join
ou variáveis de uma cláusula anterior Select
na expressão de consulta. A Select
cláusula também pode incluir valores estáticos. Por exemplo, o exemplo de código a seguir mostra uma expressão de consulta na qual a Select
cláusula define o resultado da consulta como um novo tipo anônimo com quatro membros: ProductName
, Price
, Discount
e DiscountedPrice
. Os ProductName
valores e Price
member são retirados da variável de gama de produtos definida na From
cláusula. O DiscountedPrice
valor do membro é calculado na Let
cláusula. O Discount
membro é um 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
A Select
cláusula introduz um novo conjunto de variáveis de intervalo para cláusulas de consulta subsequentes, e as variáveis de intervalo anteriores não estão mais no escopo. A última Select
cláusula em uma expressão de consulta determina o valor de retorno da consulta. Por exemplo, a consulta a seguir retorna o nome da empresa e o ID do pedido para cada pedido de cliente para o qual o total excede 500. A primeira Select
cláusula identifica as variáveis de intervalo para a Where
cláusula e a segunda Select
cláusula. A segunda Select
cláusula identifica os valores retornados pela consulta como um novo 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
Se a Select
cláusula identificar um único item a ser retornado, a expressão de consulta retornará uma coleção do tipo desse único item. Se a Select
cláusula identificar vários itens a serem retornados, a expressão de consulta retornará uma coleção de um novo tipo anônimo, com base nos itens selecionados. Por exemplo, as duas consultas a seguir retornam coleções de dois tipos diferentes com base na Select
cláusula. A primeira consulta retorna uma coleção de nomes de empresas como cadeias de caracteres. A segunda consulta retorna uma coleção de objetos preenchidos com os nomes da empresa e informações de Customer
endereço.
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}
Exemplo
A expressão de consulta a seguir usa uma From
cláusula para declarar uma variável cust
de intervalo para a customers
coleção. A Select
cláusula seleciona o nome do cliente e o valor de ID e preenche as CompanyName
colunas e CustomerID
da nova variável de intervalo. A For Each
instrução faz um loop sobre cada objeto retornado e exibe as CompanyName
colunas e CustomerID
para 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