Partilhar via


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 Aggregateclá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, Discounte 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

Consulte também