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
eSelect
ou explicitamente usando as cláusulasJoin
ouGroup 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
eTake 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