From Clause (Visual Basic)
Specifies one or more range variables and a collection to query.
From element [ As type ] In collection [ _ ] [, element2 [ As type2 ] In collection2 [, ... ] ]
||Required. A range variable used to iterate through the elements of the collection. A range variable is used to refer to each member of the
||Optional. The type of
||Required. Refers to the collection to be queried. Must be an enumerable type.|
From clause is used to identify the source data for a query and the variables that are used to refer to an element from the source collection. These variables are called range variables. The
From clause is required for a query, except when the
Aggregate clause is used to identify a query that returns only aggregated results. For more information, see Aggregate Clause.
You can specify multiple
From clauses in a query to identify multiple collections to be joined. When multiple collections are specified, they are iterated over independently, or you can join them if they are related. You can join collections implicitly by using the
Select clause, or explicitly by using the
Group Join clauses. As an alternative, you can specify multiple range variables and collections in a single
From clause, with each related range variable and collection separated from the others by a comma. The following code example shows both syntax options for the
' 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
From clause defines the scope of a query, which is similar to the scope of a
For loop. Therefore, each
element range variable in the scope of a query must have a unique name. Because you can specify multiple
From clauses for a query, subsequent
From clauses can refer to range variables in the
From clause, or they can refer to range variables in a previous
From clause. For example, the following example shows a nested
From clause where the collection in the second clause is based on a property of the range variable in the first clause.
Dim allOrders = From cust In GetCustomerList() From ord In cust.Orders Select ord
From clause can be followed by any combination of additional query clauses to refine the query. You can refine the query in the following ways:
Combine multiple collections implicitly by using the
Selectclauses, or explicitly by using the
Whereclause to filter the query result.
Sort the result by using the
Group similar results together by using the
Aggregateclause to identify aggregate functions to evaluate for the whole query result.
Letclause to introduce an iteration variable whose value is determined by an expression instead of a collection.
Distinctclause to ignore duplicate query results.
Identify parts of the result to return by using the
Skip While, and
The following query expression uses a
From clause to declare a range variable
cust for each
Customer object in the
customers collection. The
Where clause uses the range variable to restrict the output to customers from the specified region. The
For Each loop displays the company name for each customer in the query result.
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