Compartilhar 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 definir os membros de um novo tipo anônimo criado por uma consulta ou direcionar os membros de um tipo nomeado que é 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> em T que é o tipo criado.

A Select cláusula pode referenciar quaisquer variáveis no escopo atual. Isso inclui variáveis de intervalo identificadas na From cláusula (ou From cláusulas). Ele também inclui quaisquer novas variáveis criadas com um alias por cláusulasLetGroup ByAggregate, cláusulas ou Group Join 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, , PriceDiscounte DiscountedPrice. Os ProductName valores de membro e de membro Price são retirados da variável de intervalo 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 retornado da consulta. Por exemplo, a consulta a seguir retorna o nome da empresa e a ID do pedido para cada pedido do 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 empresa como cadeias de caracteres. A segunda consulta retorna uma coleção de Customer objetos preenchidos com os nomes da empresa e informações de 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 da ID e preenche as colunas e CustomerID as CompanyName colunas da nova variável de intervalo. A For Each instrução faz loops sobre cada objeto retornado e exibe o e CustomerID as CompanyName colunas 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

Consulte também