OFTYPE (Entity SQL)
Zwraca kolekcję obiektów z wyrażenia zapytania, które jest określonego typu.
Składnia
OFTYPE ( expression, [ONLY] test_type )
Argumenty
expression
Każde prawidłowe wyrażenie zapytania zwracające kolekcję obiektów.
test_type
Typ do testowania każdego obiektu zwróconego przez expression
element . Typ musi być kwalifikowany przez przestrzeń nazw.
Wartość zwracana
Kolekcja obiektów typu test_type
, lub typu podstawowego lub pochodnego typu test_type
. W przypadku określenia tylko wystąpień kolekcji test_type
lub będzie zwracana pusta kolekcja.
Uwagi
Wyrażenie OFTYPE
określa wyrażenie typu wystawione w celu wykonania testu typu dla każdego elementu kolekcji. Wyrażenie OFTYPE
tworzy nową kolekcję określonego typu zawierającej tylko te elementy, które były równoważne z tym typem lub podtypem.
Wyrażenie OFTYPE
jest skrótem następującego wyrażenia zapytania:
select value treat(t as T) from ts as t where t is of (T)
Biorąc pod uwagę, że menedżer jest podtypem Employee, następujące wyrażenie tworzy kolekcję tylko menedżerów z kolekcji pracowników:
OfType(employees, NamespaceName.Manager)
Istnieje również możliwość rzutowania kolekcji przy użyciu filtru typu:
OfType(executives, NamespaceName.Manager)
Ponieważ wszyscy kierownicy są menedżerami, wynikowa kolekcja nadal zawiera wszystkie oryginalne kierownictwo, choć kolekcja jest teraz wpisywana jako kolekcja menedżerów.
W poniższej tabeli przedstawiono zachowanie OFTYPE
operatora na niektórych wzorcach. Wszystkie wyjątki są zgłaszane po stronie klienta przed wywołaniem dostawcy:
Wzorzec | Zachowanie |
---|---|
OFTYPE(Collection(EntityType), EntityType) | Collection(EntityType) |
OFTYPE(Collection(ComplexType), ComplexType) | Zgłasza |
OFTYPE(Collection(RowType), RowType) | Zgłasza |
Przykład
Następujące zapytanie Entity SQL używa operatora OFTYPE, aby zwrócić kolekcję obiektów OnsiteCourse z kolekcji obiektów Course. Zapytanie jest oparte na modelu szkolnym.
SELECT onsiteCourse.Location FROM
OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse)
AS onsiteCourse