Condividi tramite


OFTYPE (Entity SQL)

Restituisce un insieme di oggetti da un'espressione di query appartenente a un tipo specifico.

OFTYPE ( expression, [ONLY] test_type )

Argomenti

  • expression
    Qualsiasi espressione di query valida che restituisca un insieme di oggetti.
  • test_type
    Il tipo rispetto al quale testare ogni oggetto restituito da expression. Il tipo deve essere qualificato da uno spazio dei nomi.

Valore restituito

Insieme di oggetti appartenenti al tipo test_type o un tipo di base o un tipo derivato di test_type. Se si specifica ONLY, verranno restituite solo le istanze di test_type o un insieme vuoto.

Osservazioni

Un'espressione OFTYPE specifica un'espressione del tipo utilizzata per eseguire un test del tipo rispetto a ogni elemento di un insieme. L'espressione OFTYPE produce un nuovo insieme del tipo specificato, contenente solo gli elementi equivalenti o al tipo o al relativo sottotipo.

Un'espressione OFTYPE è un'abbreviazione dell'espressione di query seguente:

select value treat(t as T) from ts as t where t is of (T)

Dal momento che Manager è un sottotipo di Employee, l'espressione seguente produce un insieme dei soli manager da un insieme di dipendenti:

OfType(employees, NamespaceName.Manager)

È inoltre possibile eseguire l'upcast di un insieme utilizzando il filtro del tipo:

OfType(executives, NamespaceName.Manager)

Poiché tutti i dirigenti sono manager, l'insieme risultante contiene ancora tutti i dirigenti d'azienda originali, sebbene l'insieme sia ora indicato come un insieme di manager.

Nella tabella seguente viene illustrato il comportamento dell'operatore OFTYPE con alcuni modelli. Tutte le eccezioni vengono generate sul lato client prima che il provider venga richiamato:

Modello Comportamento

OFTYPE(Collection(EntityType), EntityType)

Collection(EntityType)

OFTYPE(Collection(ComplexType), ComplexType)

Genera un'eccezione

OFTYPE(Collection(RowType), RowType)

Genera un'eccezione

Esempio

Nella query Entity SQL seguente viene utilizzato l'operatore OFTYPE per restituire un insieme di studenti da un insieme di persone. La query è basata sul modello School Entity Data Model. Per informazioni su come generare questo modello, vedere Generazione del modello EDM School (guida rapida di Entity Framework).

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

L'output ottenuto eseguendo l'esempio è il seguente:

4
5
6
7
10
11
12

Vedere anche

Concetti

Operatori di tipo (Entity SQL)
Riferimenti a Entity SQL