Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает коллекцию объектов из выражения запроса, который имеет определенный тип.
Синтаксис
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)
Учитывая, что менеджер является подтипом Employee, следующее выражение создает коллекцию только руководителей из коллекции сотрудников:
OfType(employees, NamespaceName.Manager)
Кроме того, можно создать коллекцию с помощью фильтра типов:
OfType(executives, NamespaceName.Manager)
Так как все руководители являются менеджерами, результирующая коллекция по-прежнему содержит все исходные руководители, хотя коллекция в настоящее время введите как коллекцию менеджеров.
В следующей OFTYPE таблице показано поведение оператора по некоторым шаблонам. Все исключения создаются на стороне клиента перед вызовом поставщика:
| Рисунок | Поведение |
|---|---|
| OFTYPE(Collection(EntityType), EntityType) | Collection(EntityType) |
| OFTYPE(Collection(ComplexType), ComplexType) | Throws |
| OFTYPE(Collection(RowType), RowType) | Throws |
Пример
Следующий запрос Entity SQL использует оператор OFTYPE для возврата коллекции объектов OnsiteCourse из коллекции объектов Course. Запрос основан на модели школы.
SELECT onsiteCourse.Location FROM
OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse)
AS onsiteCourse