Expression Operatoren
Vergleichsoperatoren
Die folgenden Operatoren vergleichen zwei Werte. Die Operatoren machen am meisten Sinn für numerische Vergleiche. Jedoch sind auch Vergleiche mit anderen Typen möglich.
Operator | XML | Beschreibung | Beispiel | Resultat |
---|---|---|---|---|
|
| Gleich |
| Wahr |
|
| Nicht gleich |
| Falsch |
|
| Grösser als |
| Falsch |
|
| Kleiner als |
| Falsch |
|
| Grösser als oder gleich |
| Wahr |
|
| Kleiner als oder gleich |
| Wahr |
String Operatoren
Die folgenden Operatoren können für Zeichenketten verwendet werden. CI
kennzeichnet jeweils die “Case Insensitive” Variante. Die anderen Methoden berücksichtigten Gross-/Kleinschreibung.
Operator | Synonym Auch als Funktion Expression Standard Funktionen | Beschreibung | Beispiel | Resultat |
---|---|---|---|---|
|
| Startet mit |
| Wahr |
|
| Endet mit |
| Wahr |
|
| enthält |
| Wahr |
|
| Gleich* |
| Wahr |
|
| Nicht gleich* |
| Falsch |
|
| Startet mit* |
| Wahr |
|
| Endet mit* |
| Wahr |
|
| Enthält* |
| Wahr |
Arithmetische Operatoren
Für arithmetische Funktionen stehen folgende Operatoren zur Verfügung:
Operator | Beschreibung | Typen | Beispiel | Resultat |
---|---|---|---|---|
| Multiplikation | Numerisch |
| 4 |
| Division | Numerisch |
| 1 |
| Addition | Numerisch, DateTime, TimeSpan |
| 4 |
| Subtraktion | Numerisch, DateTime, TimeSpan |
| 0 |
| Potenz | Numerisch |
| 8 |
| Modulo | Numerisch |
| 1 |
Boolsche Operatoren
Folgende “verbindende” Operatoren stehen zur Verfügung:
Operator | XML | Beschreibung | Beispiel | Resultat |
---|---|---|---|---|
|
| und |
| Falsch |
|
| oder |
| Wahr |
|
| nicht |
| Falsch |
Format Operatoren
Operator | XML | Beschreibung | Beispiel | Resultat |
---|---|---|---|---|
|
|
| "17:44" |
Regular Expressions
Operator | Beschreibung | Beispiel | Resultat | |
---|---|---|---|---|
|
| matches regular expression |
| true |
|
| matches regular expression CI |
| true |
Siehe Expression Reguläre Ausdrücke für eine Beschreibung Muster-Syntax.
Null-handling
Use the following operators to test for and handle null values.
Operator | Synonym | Beschreibung | Typen | Beispiel | Resultat |
---|---|---|---|---|---|
|
| unary IS NULL | Any | ?null | true |
|
| unary IS NOT NULL | Any | !?null | false |
|
| Null-coalescing | Any | null ?? 2 | 2 |
Type-casting
The type-cast operator allows an application to transform the type directly. Any number with a decimal point is automatically a floating-point number. Use the m
suffix to make it the money type instead. For some other common types, there are standard functions that are more flexible than type-casting (see custom dates and time functions and custom Guid functions).
Operator | Beschreibung | Typen | Beispiel | Resultat |
---|---|---|---|---|
| Type-cast | Typename, Any | (int)value | value (w/type 'int') |
A product can create expressions that return specific types using the MetaType, as shown in the examples below.
Example | .NET Type of result |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A product can also use any available, fully-qualified .NET type name, as shown in the examples below.
Example | Result |
---|---|
(System.DayOfWeek)5 |
|
(System.DateTime)"2020-01-01 12:00:00" |
|
(System.TimeSpan)"15:14:13" |
|
Lists
Use the following operators with lists.
Operator | Beschreibung | Typen | Beispiel | Resultat |
---|---|---|---|---|
| Containment | Any | Array
| 1 in [1,2,3] |
not | Not in list | Any |
| !(5 in [1,2,3]) |
List Operator
Several of the operators above can be applied to all elements of a list using a list operator. For example, the expression [+::1,1,2,3]
evaluates to 1 + 1 + 2 + 3
.
The following operators work with lists:
&&
||
#
+
-
*
^
Operator Precedence
Operator precedence is enforced with staggered productions in the grammar and consists of five precedence levels (from most-binding to least):
Level | Operators |
---|---|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
The following examples show how precedence affects expressions and how to use parentheses to change the precedence.
Example | Result |
---|---|
|
|
|
|
|
|
|
|