Cláusula From (Visual Basic)

Especifica uma ou mais variáveis de intervalo e uma coleção para consultar.

Sintaxe

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

Partes

Termo Definição
element Obrigatórios. Uma variável de intervalo usada para iterar por meio dos elementos da coleção. Uma variável de intervalo é usada para se referir a cada membro da collection como a consulta itera por meio do collection. Deve ser um tipo enumerável.
type Opcional. O tipo de element. Se nenhum type for especificado, o tipo de element é inferido de collection.
collection Obrigatórios. Refere-se à coleção a ser consultada. Deve ser um tipo enumerável.

Comentários

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

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

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

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

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

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

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

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

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

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

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

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

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

Exemplo

A expressão de consulta a seguir usa uma cláusula From para declarar uma variável de intervalo cust para cada objeto Customer na coleção customers. A cláusula Where usa a variável de intervalo para restringir a saída aos clientes da região especificada. O loop For Each 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

Confira também