Compartilhar via


Cláusula From (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

Prazo Definição
element Obrigatório 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 do collection como a consulta itera por meio do collection. Deve ser um tipo enumerável.
type Opcional. O tipo de element. Se não type for especificado, o tipo de element é inferido de collection.
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 de uma consulta e as variáveis 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 os resultados agregados. Para obter mais informações, consulte Cláusula Aggregate.

Você pode especificar várias From cláusulas 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 forma independente ou você pode juntá-las se elas estiverem relacionadas. Você pode unir coleções implicitamente usando a Select cláusula ou explicitamente usando as cláusulas ouGroup Join.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 separadas das outras por vírgula. O exemplo de código a seguir mostra as duas 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 cláusulas subsequentes From podem se referir a variáveis de intervalo na From cláusula ou podem se referir a variáveis de intervalo em uma cláusula anterior From . 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 de intervalo 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 cláusulas ouGroup Join.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 de agregação a serem avaliadas para 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 , TakeSkip Whilee Take While .

Exemplo

A expressão de consulta a seguir usa uma From cláusula para declarar uma variável cust de intervalo para cada Customer objeto na customers coleção. A Where cláusula usa a variável de intervalo 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