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


OFTYPE (язык Entity SQL)

Возвращает коллекцию объектов из выражения запроса, которое относится к заданному типу.

OFTYPE ( expression, [ONLY] test_type )

Аргументы

  • expression
    Любое допустимое выражение запроса, возвращающее коллекцию объектов.
  • test_type
    Тип, по которому проверяется каждый объект, возвращаемый expression. Тип должен быть дополнен путем указания пространства имен.

Возвращаемое значение

Коллекция объектов, которые имеют тип test_type, базовый тип или тип, производный от test_type. Если задан параметр ONLY, возвращаются только экземпляры test_type или пустая коллекция.

Замечания

Выражение OFTYPE задает выражение с определением типа, которое применяется для проверки типа по отношению к каждому элементу коллекции. Выражение OFTYPE позволяет получить новую коллекцию указанного типа, содержащую только те элементы, которые были эквивалентны либо этому типу, либо его подтипу.

Выражение OFTYPE представляет собой сокращение следующего выражения запроса.

select value treat(t as T) from ts as t where t is of (T)

Например, если предположить, что тип Manager представляет собой подтип Employee, то следующее выражение позволяет извлечь из коллекции сотрудников данные только менеджеров:

OfType(employees, NamespaceName.Manager)

Можно также выполнить приведение коллекции с помощью фильтра типов:

OfType(executives, NamespaceName.Manager)

Все руководители являются менеджерами компании, поэтому полученная в результате коллекция по-прежнему содержит данные всех руководителей, несмотря на то что теперь по своему типу она рассматривается как коллекция менеджеров.

В следующей таблице показано поведение оператора OFTYPE по отношению к некоторым шаблонам. Все исключения активизируются на стороне клиента перед вызовом поставщика.

Шаблон Поведение

OFTYPE(Collection(EntityType), EntityType)

Collection(EntityType)

OFTYPE(Collection(ComplexType), ComplexType)

Активизирует исключение

OFTYPE(Collection(RowType), RowType)

Активизирует исключение

Примеры

В следующем запросе Entity SQL оператор OFTYPE используется для возврата коллекции Students из коллекции People. Запрос основан на модели EDM School. Сведения о создании этой модели см. в разделе Создание модели EDM School (краткое руководство по платформе Entity Framework).

SELECT VALUE people FROM 
    OFTYPE(SchoolDataEntities.People, SchoolDataLib.Student) AS people

В этом примере происходит вывод следующих данных:

4
5
6
7
10
11
12

См. также

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

Операторы работы с типами (язык Entity SQL)
Справочник по Entity SQL