OFTYPE (实体 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)

鉴于经理是 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

另请参阅