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