Compartir a través de


OFTYPE (Entity SQL)

Devuelve una colección de objetos de una expresión de consulta de un tipo específico.

OFTYPE ( expression, [ONLY] test_type )

Argumentos

  • expression
    Expresión de consulta válida que devuelve una colección de objetos.
  • test_type
    Tipo con el que probar cada objeto que devuelve expression. El tipo debe estar certificado por un espacio de nombres.

Valor devuelto

Colección de objetos que son del tipo test_type o de un tipo base o derivado de test_type. Si se especifica ONLY, sólo se devolverán las instancias de test_type o una colección vacía.

Comentarios

Una expresión OFTYPE especifica una expresión de un tipo que se emite para realizar una prueba del tipo con cada elemento de una colección. La expresión OFTYPE produce una nueva colección del tipo especificado que contiene sólo los elementos que eran equivalentes a ese tipo o a alguno de sus subtipos.

Una expresión OFTYPE es una abreviatura de la expresión de consulta siguiente:

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

Dado que Manager es un subtipo de Employee, la expresión siguiente produce una colección de jefes (managers) únicamente a partir de una colección de empleados (employees):

OfType(employees, NamespaceName.Manager)

También es posible convertir una colección utilizando el filtro de tipo:

OfType(executives, NamespaceName.Manager)

Puesto que todos los ejecutivos (executive) son jefes (managers), la colección resultante todavía contiene a todos los ejecutivos originales, aunque ahora tengan el tipo de una colección de administradores.

En la tabla siguiente se muestra el comportamiento del operador OFTYPE en algunos patrones. Todas las excepciones se producen en el cliente antes de que se llame al proveedor:

Patrón Comportamiento

OFTYPE(Collection(EntityType), EntityType)

Collection(EntityType)

OFTYPE(Collection(ComplexType), ComplexType)

Produce

OFTYPE(Collection(RowType), RowType)

Produce

Ejemplo

La consulta de Entity SQL siguiente utiliza el operador OFTYPE para devolver una colección de alumnos (Student) de una colección de personas (People). La consulta se basa en el Entity Data Model School. Para obtener información sobre cómo generar este modelo, vea Generar el Entity Data Model School (Tutorial rápido de Entity Framework).

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

Este ejemplo genera el siguiente resultado:

4
5
6
7
10
11
12

Vea también

Conceptos

Operadores de tipo (Entity SQL)
Referencia de Entity SQL