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 演算子を使用して、People のコレクションから Student のコレクションを取得します。このクエリは、School Entity Data Model に基づいています。このモデルの生成方法については、「School Entity Data Model の生成 (Entity Framework クイック スタート)」を参照してください。
SELECT VALUE people FROM
OFTYPE(SchoolDataEntities.People, SchoolDataLib.Student) AS people
この例では次の出力が生成されます。
4
5
6
7
10
11
12