Поделиться через


Условие From (Visual Basic)

Обновлен: Ноябрь 2007

Указывает один или несколько переменных диапазонов и коллекцию для выполнения запроса.

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

Компоненты

  • element
    Обязательный атрибут. range variable используется для циклического просмотра элементов коллекции. Переменная диапазона используется для ссылки на каждый член collection, когда запрос циклически просматривает collection. Должно быть перечислимым типом.

  • type
    Необязательный атрибут. Тип element. Если не указан type, тип element получается из collection.

  • collection
    Обязательный атрибут. Ссылка на коллекцию, которая будет запрашиваться. Должно быть перечислимым типом.

Заметки

Предложение From используется для определения источника данных для запроса и переменных, которые используются для ссылок на элементы из исходной коллекции. Эти переменные называются range variables. Предложение From необходимо для запроса, за исключением случая, когда предложение Aggregate используется для идентификации запроса, возвращающего только сгруппированные результаты. Дополнительные сведения см. в разделе Статистическое предложение (Visual Basic).

Можно указать несколько предложений From в запросе для идентификации нескольких коллекций для объединения. При указании нескольких коллекций, они воспринимаются, как независимые друг от друга, или можно объединить их, если они связаны. Можно объединить коллекции неявно, с помощью предложения Select или явно используя предложения Join или Group Join. В качестве альтернативы можно указать несколько переменных диапазонов и коллекций в одном предложении From с каждой связанной переменной диапазона и коллекции, разделенных между собой запятыми. В следующем примере показаны оба параметра синтаксиса для предложения 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

Предложение From определяет область запроса, которая аналогична области цикла For. Таким образом, каждая переменная диапазона element в области запроса должна иметь уникальное имя. Поскольку можно указать несколько предложений From для запроса, последующие предложения From могут обратиться к переменным диапазона в предложении From или они могут ссылаться на переменную диапазона в предыдущем предложении From. Например, в следующем примере показано вложенное предложение From, где коллекция во втором предложении основана на свойстве переменной диапазона в первом предложении.

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

После каждого предложения From может следовать любая комбинация предложений дополнительных запросов для уточнения запроса. Можно уточнить запрос следующими способами:

  • Объединить несколько коллекций неявно с помощью предложений From и Select или явно с помощью предложений Join и Group Join.

  • Используйте предложение Where для фильтрации результатов запроса.

  • Отсортируйте результат с помощью предложения Order By.

  • Группирование аналогичных результатов с помощью предложения Group By.

  • Используйте предложение Aggregate для идентификации итоговых функций для вычисления результата всего запроса.

  • Используйте предложение Let для представления переменной итерации, значение которой определяется вместо выражения коллекции.

  • Чтобы игнорировать повторяющиеся результаты, используйте предложение Distinct.

  • Укажите часть результата для возврата с помощью предложений Skip, Take, Skip While и Take While.

Пример

Следующее выражение запроса использует предложение From для объявления диапазона переменной cust для каждого объекта Customer в коллекции customers. Предложение Where использует переменную диапазона для ограничения вывода для заказчиков из указанной области. В результате запроса цикл For Each отображает имя компании для каждого заказчика.

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

См. также

Основные понятия

Знакомство с LINQ в Visual Basic

Ссылки

Инструкция For Each... Next (Visual Basic)

Инструкция For... Next (Visual Basic)

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

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

Статистическое предложение (Visual Basic)

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

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

Предложение Group Join (Visual Basic)

Предложение Order By (Visual Basic)

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

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

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

Предложение Skip While (Visual Basic)

Предложение Take While (Visual Basic)

Другие ресурсы

Запросы (Visual Basic)