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

Define o resultado de uma consulta.Defines the result of a query.

SintaxeSyntax

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

PartesParts

var1
Opcional.Optional. Um alias que pode ser usado para referenciar os resultados da expressão de coluna.An alias that can be used to reference the results of the column expression.

fieldName1
Necessário.Required. O nome do campo a ser retornado no resultado da consulta.The name of the field to return in the query result.

ComentáriosRemarks

Você pode usar o Select cláusula para definir os resultados retornados de uma consulta.You can use the Select clause to define the results to return from a query. Isso permite que você definir os membros de um novo tipo anônimo que é criado por uma consulta, ou os membros de um tipo nomeado que é retornado por uma consulta de destino.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. O Select cláusula não é necessária para uma consulta.The Select clause is not required for a query. Se nenhum Select cláusula for especificada, a consulta retornará um tipo com base em todos os membros das variáveis de intervalo identificadas no escopo atual.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 obter mais informações, consulte Tipos anônimos.For more information, see Anonymous Types. Quando uma consulta cria um tipo nomeado, ela retornará um resultado do tipo IEnumerable<T> onde T é do tipo criado.When a query creates a named type, it will return a result of type IEnumerable<T> where T is the created type.

O Select cláusula pode referenciar qualquer variável no escopo atual.The Select clause can reference any variables in the current scope. Isso inclui variáveis de intervalo identificadas na From cláusula (ou From cláusulas).This includes range variables identified in the From clause (or From clauses). Ele também inclui quaisquer variáveis novas criadas com um alias, o Aggregate, Let, Group By, ou Group Join cláusulas ou variáveis do anterior Select cláusula na expressão 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. O Select cláusula também pode incluir valores estáticos.The Select clause can also include static values. Por exemplo, o exemplo de código a seguir mostra uma expressão de consulta em que o Select cláusula define o resultado da consulta como um novo tipo anônimo com quatro membros: ProductName, Price, Discount, e 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. O ProductName e Price os valores de membro são tirados da variável de intervalo do produto que é definido no From cláusula.The ProductName and Price member values are taken from the product range variable that is defined in the From clause. O DiscountedPrice valor do membro é calculado no Let cláusula.The DiscountedPrice member value is calculated in the Let clause. O Discount membro é um 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

O Select cláusula introduz um novo conjunto de variáveis de intervalo para cláusulas de consulta subsequentes, e as variáveis de intervalo anterior não estão mais no escopo.The Select clause introduces a new set of range variables for subsequent query clauses, and previous range variables are no longer in scope. A última Select cláusula em uma expressão de consulta determina o valor de retorno da consulta.The last Select clause in a query expression determines the return value of the query. Por exemplo, a consulta a seguir retorna a empresa nome e a ordem de ID para cada pedido de cliente para o qual o total exceder 500.For example, the following query returns the company name and order ID for every customer order for which the total exceeds 500. A primeira Select cláusula identifica as variáveis de intervalo para o Where cláusula e a segunda Select cláusula.The first Select clause identifies the range variables for the Where clause and the second Select clause. O segundo Select cláusula identifica os valores retornados pela consulta como um novo 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

Se o Select cláusula identifica um único item para retornar, a expressão de consulta retorna uma coleção do tipo de item único.If the Select clause identifies a single item to return, the query expression returns a collection of the type of that single item. Se o Select cláusula identifica vários itens para retornar, a expressão de consulta retorna uma coleção de um novo tipo anônimo, com base nos itens selecionados.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 exemplo, duas consultas a seguir retornam coleções de dois tipos diferentes com base no Select cláusula.For example, the following two queries return collections of two different types based on the Select clause. A primeira consulta retorna uma coleção de nomes de empresa como cadeias de caracteres.The first query returns a collection of company names as strings. A segunda consulta retorna uma coleção de Customer objetos preenchidos com os nomes de empresa e informações de endereço.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}

ExemploExample

A seguinte consulta de expressão usa uma From cláusula para declarar uma variável de intervalo cust para o customers coleção.The following query expression uses a From clause to declare a range variable cust for the customers collection. O Select cláusula seleciona o nome do cliente e o valor de ID e preenche o CompanyName e CustomerID colunas da nova variável de intervalo.The Select clause selects the customer name and ID value and populates the CompanyName and CustomerID columns of the new range variable. O For Each instrução faz um loop sobre cada objeto retornado e exibe as CompanyName e CustomerID colunas para 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

Consulte tambémSee also