Da cláusula (Visual Basic)

Especifica uma ou mais variáveis de intervalo e uma coleção a ser consultada.

Sintaxe

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

Partes

Termo Definição
element Obrigatório. Uma variável de intervalo usada para iterar através dos elementos da coleção. Uma variável range é usada para se referir a cada membro do à medida que a collection consulta itera através do collection. Deve ser um tipo enumerável.
type Opcional. O tipo de element. Se não type for especificado, o tipo de é inferido a partir de elementcollection.
collection Obrigatório. Refere-se à coleção a ser consultada. Deve ser um tipo enumerável.

Observações

A From cláusula é usada para identificar os dados de origem para uma consulta e as variáveis que são usadas para se referir a um elemento da coleção de origem. Essas variáveis são chamadas de variáveis de intervalo. A From cláusula é necessária para uma consulta, exceto quando a Aggregate cláusula é usada para identificar uma consulta que retorna apenas resultados agregados. Para obter mais informações, consulte Cláusula agregada.

Você pode especificar várias From cláusulas em uma consulta para identificar várias coleções a serem associadas. Quando várias coleções são especificadas, elas são iteradas de forma independente ou você pode juntá-las se estiverem relacionadas. Você pode unir coleções implicitamente usando a Select cláusula ou explicitamente usando as Join cláusulas or Group Join . Como alternativa, você pode especificar várias variáveis de intervalo e coleções em uma única From cláusula, com cada variável de intervalo relacionada e coleção separada das outras por uma vírgula. O exemplo de código a seguir mostra ambas as opções de sintaxe para a From cláusula.

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
              From var2 In collection2

A From cláusula define o escopo de uma consulta, que é semelhante ao escopo de um For loop. Portanto, cada element variável de intervalo no escopo de uma consulta deve ter um nome exclusivo. Como você pode especificar várias From cláusulas para uma consulta, as From cláusulas subsequentes From podem se referir a variáveis de intervalo na cláusula ou podem se referir a variáveis de intervalo em uma cláusula anteriorFrom. Por exemplo, o exemplo a seguir mostra uma cláusula aninhada From em que a coleção na segunda cláusula é baseada em uma propriedade da variável range na primeira cláusula.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

Cada From cláusula pode ser seguida por qualquer combinação de cláusulas de consulta adicionais para refinar a consulta. Você pode refinar a consulta das seguintes maneiras:

  • Combine várias coleções implicitamente usando as From cláusulas e Select ou explicitamente usando as Join cláusulas or Group Join .

  • Use a Where cláusula para filtrar o resultado da consulta.

  • Classifique o resultado usando a Order By cláusula.

  • Agrupe resultados semelhantes usando a Group By cláusula.

  • Use a Aggregate cláusula para identificar funções agregadas para avaliar todo o resultado da consulta.

  • Use a Let cláusula para introduzir uma variável de iteração cujo valor é determinado por uma expressão em vez de uma coleção.

  • Use a Distinct cláusula para ignorar resultados de consulta duplicados.

  • Identifique partes do resultado a serem retornadas usando as Skipcláusulas , Take, Skip Whilee Take While .

Exemplo

A expressão de consulta a seguir usa uma From cláusula para declarar uma variável cust range para cada Customer objeto na customers coleção. A Where cláusula usa a variável range para restringir a saída aos clientes da região especificada. O For Each loop exibe o nome da empresa para cada cliente no resultado da consulta.

Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
                              ByVal region As String)

    Dim customersForRegion = From cust In customers
                             Where cust.Region = region

    For Each cust In customersForRegion
        Console.WriteLine(cust.CompanyName)
    Next
End Sub

Consulte também