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 のサブタイプである場合、次の式からは、従業員 (employee) のコレクションのうち、マネージャー (manager) のコレクションだけが返されます。
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 演算子を使用して、Course オブジェクトのコレクションから OnsiteCourse オブジェクトのコレクションを取得して返します。 クエリは、School モデル に基づいています。
SELECT onsiteCourse.Location FROM
OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse)
AS onsiteCourse