ISOF (Entity SQL)
判斷運算式的型別是否不屬於所指定的型別或它的其中一個子型別。
語法
expression IS [ NOT ] OF ( [ ONLY ] type )
引數
expression
任何用來判斷屬於何種型別的有效查詢運算式。
否定 IS OF 的 EDM.Boolean 結果。
指定 IS OF 只在 expression
為 type
型別而非它的任何子型別時傳回 true
。
type
要對它測試 expression
的型別。 此型別必須以命名空間限定。
傳回值
如果 expression
為 T 型別,且 T 為基底型別或 type
的衍生型別,則為 true
;如果 expression
在執行階段為 null 則為 null;否則為 false
。
備註
運算式 expression IS NOT OF (type)
和 expression IS NOT OF (ONLY type)
在語法上分別相當於 NOT (expression IS OF (type))
和 NOT (expression IS OF (ONLY type))
。
下表所示為 IS OF
運算子在某些一般及邊角模式中的行為。 所有例外狀況都是在叫用提供者之前從用戶端擲回:
模式 | 行為 |
---|---|
null IS OF (EntityType) | 擲回 |
null IS OF (ComplexType) | 擲回 |
null IS OF (RowType) | 擲回 |
TREAT (null AS EntityType) IS OF (EntityType) | 傳回 DBNull |
TREAT (null AS ComplexType) IS OF (ComplexType) | 擲回 |
TREAT (null AS RowType) IS OF (RowType) | 擲回 |
EntityType IS OF (EntityType) | 傳回 true/false |
ComplexType IS OF (ComplexType) | 擲回 |
RowType IS OF (RowType) | 擲回 |
範例
下列 Entity SQL 查詢使用 IS OF 運算子來判斷查詢運算式的型別,然後使用 TREAT 運算子將 Course 型別的物件轉換成 OnsiteCourse 型別的物件集合。 此查詢是以 School Model為基礎。
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]