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