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'étudiants (Student) à partir d'une collection de personnes (People). Cette requête est basée sur le modèle School Entity Data Model. Pour obtenir des informations sur la façon de générer ce modèle, voir Génération du modèle Entity Data Model School (Démarrage rapide d'Entity Framework).

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

Cet exemple produit la sortie suivante :

4
5
6
7
10
11
12

Voir aussi

Concepts

Opérateurs de type [Entity SQL]
Référence Entity SQL