OFTYPE (Entity SQL)
Retourne une collection d'objets à partir d'une expression de requête d'un type spécifique.
OFTYPE ( expression, [ONLY] test_type )
Arguments
- expression
Toute expression de requête valide qui retourne une collection d'objets.
- test_type
Type en fonction duquel tester chaque objet retourné par expression. Le type doit être qualifié par un espace de noms.
Valeur de retour
Collection d'objets du type test_type ou d'un type de base ou dérivé de test_type. Si ONLY est spécifié, seules les instances de test_type ou une collection vide seront retournées.
Notes
Une expression OFTYPE spécifie une expression de type émise pour effectuer un test de type sur chaque élément d'une collection. L'expression OFTYPE produit une nouvelle collection du type spécifié ne contenant que les éléments qui étaient équivalents à ce type ou à l'un de ses sous-types.
Une expression OFTYPE est l'abréviation de l'expression de requête suivante :
select value treat(t as T) from ts as t where t is of (T)
Un Manager étant un sous-type d'Employee, l'expression suivante produit à partir d'une collection d'employés (employee) une collection composée uniquement de responsables (manager) :
OfType(employees, NamespaceName.Manager)
Il est également possible d'effectuer un upcast sur une collection à l'aide du filtre de type :
OfType(executives, NamespaceName.Manager)
Puisque tous les cadres (executives) sont des responsables, la collection obtenue contient toujours tous les cadres d'origine, même si elle est désormais typée en tant que collection de responsables.
Le tableau suivant montre le comportement de l'opérateur OFTYPE sur certains modèles. Toutes les exceptions sont levées du côté client avant que le fournisseur ne soit appelé :
Modèle | Comportement |
---|---|
OFTYPE(Collection(EntityType), EntityType) |
Collection(EntityType) |
OFTYPE(Collection(ComplexType), ComplexType) |
Exception |
OFTYPE(Collection(RowType), RowType) |
Exception |
Exemple
La requête Entity SQL suivante utilise l'opérateur OFTYPE pour retourner une collection d'objets OnsiteCourse à partir d'une collection d'objets Course. La requête est basée sur le Modèle School.
SELECT onsiteCourse.Location FROM
OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse)
AS onsiteCourse