从具有特定类型的查询表达式中返回对象的集合。
语法
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 运算符从 Course 对象的集合中返回 OnsiteCourse 对象的集合。 查询基于 学校模型。
SELECT onsiteCourse.Location FROM
OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse)
AS onsiteCourse