Предложение From (Visual Basic)From Clause (Visual Basic)

Указывает один или несколько переменных диапазона и набор для запроса.Specifies one or more range variables and a collection to query.

СинтаксисSyntax

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

ЧастиParts

ТерминTerm ОпределениеDefinition
element Обязательный.Required. Объект переменная диапазона используется для итерации по элементам коллекции.A range variable used to iterate through the elements of the collection. Переменная диапазона используется для обращения к каждому элементу collection как запрос проходит по collection.A range variable is used to refer to each member of the collection as the query iterates through the collection. Должен быть перечислимым типом.Must be an enumerable type.
type Необязательный параметр.Optional. Тип параметра element.The type of element. Если не type указан, тип element выводится из collection.If no type is specified, the type of element is inferred from collection.
collection Обязательный.Required. Относится к коллекции, должны запрашиваться.Refers to the collection to be queried. Должен быть перечислимым типом.Must be an enumerable type.

ПримечанияRemarks

From Предложение используется для определения источника данных для запроса и переменные, которые используются для ссылки на элемент в исходной коллекции.The 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. From Предложение является обязательным для запроса, за исключением случаев Aggregate предложение используется для определения запросов, что возвращает только агрегированные результаты.The From clause is required for a query, except when the Aggregate clause is used to identify a query that returns only aggregated results. Дополнительные сведения см. в разделе предложение Aggregate.For more information, see Aggregate Clause.

Можно указать несколько From предложения в запросе для идентификации нескольких коллекций для объединения.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. Объединение коллекций неявно с помощью Select предложения, или явно с помощью Join или Group Join предложения.You can join collections implicitly by using the Select clause, or explicitly by using the Join or Group Join clauses. Кроме того, можно указать несколько переменных диапазона и коллекций в одном From предложение, с каждой связанной переменной диапазона и коллекций, разделенных запятыми от других.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. В следующем примере кода показаны оба варианта синтаксиса для From предложение.The following code example shows both syntax options for the From clause.

' 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 Предложение определяет область запроса, который аналогичен рамки For цикла.The From clause defines the scope of a query, which is similar to the scope of a For loop. Таким образом, каждый element переменной диапазона в области запроса должен иметь уникальное имя.Therefore, each element range variable in the scope of a query must have a unique name. Поскольку можно указать несколько From предложения запроса, последующие From предложения могут ссылаться на переменные диапазона в From предложения, или они могут ссылаться на переменную диапазона в предыдущем From предложение.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. Например, в следующем примере показано вложенный From предложение, где коллекция во втором предложении основана на свойстве переменной диапазона в первом предложении.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 предложение может следовать любое сочетание дополнительных предложений запроса для уточнения запроса.Each 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:

  • Объединить несколько коллекций неявно с помощью From и Select предложения, или явно с помощью Join или Group Join предложения.Combine multiple collections implicitly by using the From and Select clauses, or explicitly by using the Join or Group Join clauses.

  • Используйте Where предложение для фильтрации результатов запроса.Use the Where clause to filter the query result.

  • Отсортировать результаты с помощью Order By предложение.Sort the result by using the Order By clause.

  • Группировать аналогичные результаты с помощью Group By предложение.Group similar results together by using the Group By clause.

  • Используйте Aggregate предложение для идентификации агрегатных функций для вычисления результата всего запроса.Use the Aggregate clause to identify aggregate functions to evaluate for the whole query result.

  • Используйте Let предложение для представления переменной итерации, значение которого определяется с помощью выражения, а не коллекция.Use the Let clause to introduce an iteration variable whose value is determined by an expression instead of a collection.

  • Используйте Distinct предложение, чтобы игнорировать повторяющиеся результаты запроса.Use the Distinct clause to ignore duplicate query results.

  • Определения частей результат для возврата с помощью Skip, Take, Skip While, и Take While предложения.Identify parts of the result to return by using the Skip, Take, Skip While, and Take While clauses.

ПримерExample

В следующем запросе используется выражение From предложение для объявления переменной диапазона cust для каждого Customer объекта в customers коллекции.The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. Where Предложение использует переменную диапазона для ограничения выходных данных клиентов из заданной области.The Where clause uses the range variable to restrict the output to customers from the specified region. For Each Цикл имя компании для каждого клиента в результатах запроса.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

См. такжеSee also