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 运算符从 People 集合返回 Student 集合。该查询基于 School 实体数据模型。有关如何生成此模型的信息,请参见生成 School 实体数据模型(实体框架快速入门)

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

此示例产生以下输出:

4
5
6
7
10
11
12

另请参见

概念

类型运算符 (Entity SQL)
Entity SQL 参考