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) 引发

示例

下面的实体 SQL 查询使用 OFTYPE 运算符从 Course 对象集合返回 OnsiteCourse 对象集合。 该查询基于 School 模型

SELECT onsiteCourse.Location FROM 
    OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse) 
    AS onsiteCourse

请参阅