DataColumn.Expression-Eigenschaft
Ruft den Ausdruck ab, mit dem Zeilen gefiltert, die Werte in einer Spalte berechnet oder eine Aggregatspalte erstellt werden, oder legt diesen fest.
Namespace: System.Data
Assembly: System.Data (in system.data.dll)
Syntax
'Declaration
Public Property Expression As String
'Usage
Dim instance As DataColumn
Dim value As String
value = instance.Expression
instance.Expression = value
public string Expression { get; set; }
public:
property String^ Expression {
String^ get ();
void set (String^ value);
}
/** @property */
public String get_Expression ()
/** @property */
public void set_Expression (String value)
public function get Expression () : String
public function set Expression (value : String)
Eigenschaftenwert
Ein Ausdruck, mit dem der Wert einer Spalte berechnet oder eine Aggregatspalte erstellt wird. Der Rückgabetyp eines Ausdrucks wird durch den DataType der Spalte bestimmt.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Die AutoIncrement-Eigenschaft oder die Unique-Eigenschaft ist auf true festgelegt. |
|
Bei der Verwendung der CONVERT-Funktion wird der Ausdruck als Zeichenfolge ausgewertet, die Zeichenfolge enthält jedoch keine Darstellung, die in den Typparameter konvertiert werden kann. |
|
Bei der Verwendung der CONVERT-Funktion ist die angeforderte Umwandlung nicht möglich. Ausführliche Informationen zu möglichen Umwandlungen finden Sie im folgenden Abschnitt unter der Konvertierungsfunktion. |
|
Bei der Verwendung der SUBSTRING-Funktion befindet sich das Anfangsargument außerhalb des gültigen Bereichs. – oder – Bei der Verwendung der SUBSTRING-Funktion befindet sich das Längenargument außerhalb des gültigen Bereichs. |
|
Bei der Verwendung der LEN-Funktion oder der TRIM-Funktion wird der Ausdruck nicht als Zeichenfolge ausgewertet. Dies gilt auch für Ausdrücke, die als Char ausgewertet werden. |
Hinweise
Mit der Expression-Eigenschaft können Sie unter anderem berechnete Spalten erstellen. Wenn Sie z. B. einen Steuerwert berechnen möchten, wird der Stückpreis mit dem Steuersatz einer bestimmten Region multipliziert. Da Steuersätze regional unterschiedlich sind, ist es unmöglich, einen einzigen Steuersatz in eine Spalte einzugeben. Stattdessen wird der Wert mithilfe der Expression-Eigenschaft berechnet, wie im Visual Basic-Code im folgenden Abschnitt veranschaulicht:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Darüber hinaus können Sie mit der Eigenschaft eine Aggregatspalte erstellen. Wie bei einem berechneten Wert wird bei einem Aggregat eine Operation auf Grundlage des gesamten Zeilensets in der DataTable durchgeführt. Ein einfaches Beispiel besteht darin, die Anzahl der im Set zurückgegebenen Zeilen zu zählen. Diese Methode würden Sie verwenden, um die Anzahl der von einem bestimmten Verkäufer abgeschlossenen Transaktionen zu zählen, wie im Visual Basic-Code veranschaulicht:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
Ausdruckssyntax
Verwenden Sie beim Erstellen eines Ausdrucks die ColumnName-Eigenschaft, um auf Spalten zu verweisen. Wenn z. B. der ColumnName einer Spalte "UnitPrice" und der einer anderen "Quantity" lautet, ergibt sich folgender Ausdruck:
"UnitPrice * Quantity"
Hinweis
Wenn eine Spalte in einem Ausdruck verwendet wird, wird dies als Abhängigkeit des Ausdrucks von dieser Spalte bezeichnet. Wenn eine abhängige Spalte umbenannt wird oder entfernt wird, wird keine Ausnahme ausgelöst. Eine Ausnahme wird ausgelöst, wenn auf die nicht mehr ordnungsgemäß verbundene Spalte im Ausdruck zugegriffen wird.
Beim Erstellen eines Ausdrucks für einen Filter schließen Sie Zeichenfolgen in einfache Anführungszeichen ein:
"LastName = 'Jones'"
Die folgenden Zeichen sind Sonderzeichen und müssen, wie beschrieben, mit Escapezeichen versehen werden, wenn sie in einem Spaltennamen verwendet werden:
\n (Zeilenvorschub)
\t (Tabstopp)
\r (Wagenrücklauf)
~
(
)
#
\
/
=
>
<
+
-
*
%
&
|
^
'
"
[
]
Wenn ein Spaltenname eines der oben aufgeführten Zeichen enthält, muss der Name in Klammern eingeschlossen werden. Wenn Sie z. B. eine Spalte mit dem Namen "Column#" in einem Ausdruck verwenden, schreiben Sie "[Column#]":
Total * [Column#]
Da Klammern Sonderzeichen sind, müssen Sie einen umgekehrten Schrägstrich ("\") als Escapezeichen für die Klammer verwenden, wenn diese Teil des Spaltennamens ist. Eine Spalte mit dem Namen "Column[]" wird z. B. wie folgt geschrieben:
Total * [Column[\]]
(Nur die zweite Klammer muss mit einem Escapezeichen versehen werden.)
BENUTZERDEFINIERTE WERTE
Benutzerdefinierte Werte können in Ausdrücken verwendet und mit Spaltenwerten verglichen werden. Zeichenfolgenwerte müssen in einfache Anführungszeichen eingeschlossen werden. Datumswerte müssen in Nummernzeichen (#) eingeschlossen werden. Dezimalwerte und wissenschaftliche Schreibweise sind für numerische Werte zulässig. Beispiel:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/82#"
Wandeln Sie bei Spalten mit Enumerationswerten den Wert in einen Ganzzahldatentyp um. Beispiel:
"EnumColumn = 5"
OPERATOREN
Die Verkettung mit den booleschen Operatoren AND, OR und NOT ist zulässig. Sie können mithilfe von Klammern Klauseln gruppieren und den Vorrang erzwingen. Der AND-Operator hat Vorrang gegenüber anderen Operatoren. Beispiel:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Beim Erstellen von Vergleichsausdrücken sind die folgenden Operatoren zulässig:
<
>
<=
>=
<>
=
IN
LIKE
Die folgenden arithmetischen Operatoren werden ebenfalls in Ausdrücken unterstützt:
+ (Addition)
- (Subtraktion)
* (Multiplikation)
/ (Division)
% (Modulo)
ZEICHENFOLGENOPERATOREN
Verwenden Sie zum Verketten einer Zeichenfolge das Pluszeichen (+). Der Wert der CaseSensitive-Eigenschaft der DataSet-Klasse bestimmt, ob bei Zeichenfolgenvergleichen die Groß- und Kleinschreibung berücksichtigt wird. Sie können diesen Wert jedoch mit der DataTable-Eigenschaft der CaseSensitive-Klasse überschreiben.
PLATZHALTERZEICHEN
Sowohl * als auch % können in einem LIKE-Vergleich synonym als Platzhalter verwendet werden. Wenn die Zeichenfolge in einer LIKE-Klausel * oder % enthält, müssen diese Zeichen in Klammern ([]) als Escapezeichen eingeschlossen werden. Wenn eine Klammer in der Klausel enthalten ist, müssen die Klammerzeichen mit Klammern als Escapezeichen versehen werden (z. B. [[] oder []]). Ein Platzhalter ist sowohl an Anfang und Ende eines Musters als auch nur am Ende oder nur am Anfang eines Musters zulässig. Beispiel:
"ItemName LIKE '*product*'"
"ItemName LIKE '*product'"
"ItemName LIKE 'product*'"
Platzhalter innerhalb einer Zeichenfolge sind unzulässig. 'te*xt' ist z. B. nicht zulässig.
VERWEISE AUF PARENT/CHILD-BEZIEHUNGEN
In einem Ausdruck kann auf eine übergeordnete Tabelle verwiesen werden, indem dem Spaltennamen Parent vorangestellt wird. Parent.Price verweist z. B. auf die Spalte Price der übergeordneten Tabelle.
In einem Ausdruck kann auf eine Spalte in einer untergeordneten Tabelle verwiesen werden, indem dem Spaltennamen Child vorangestellt wird. Da untergeordnete Beziehungen mehrere Zeilen zurückgeben können, müssen Sie jedoch den Verweis auf die untergeordnete Spalte in eine Aggregatfunktion einschließen. Sum(Child.Price) gibt z. B. die Summe der Spalte Price in der untergeordneten Tabelle zurück.
Wenn eine Tabelle über mehrere untergeordnete Tabellen verfügt, lautet die Syntax: Child(RelationName). Wenn eine Tabelle z. B. über die beiden untergeordneten Tabellen Customers und Orders verfügt und das DataRelation-Objekt den Namen Customers2Orders hat, lautet der Verweis wie folgt:
Avg(Child(Customers2Orders).Quantity)
AGGREGATE
Die folgenden Aggregattypen werden unterstützt:
Sum (Summe)
Avg (Durchschnitt)
Min (Minimum)
Max (Maximum)
Count (Anzahl)
StDev (Statistische Standardabweichung)
Var (Statistische Varianz).
Aggregate werden i. d. R. bei Beziehungen durchgeführt. Erstellen Sie mit einer der oben aufgelisteten Funktionen einen Aggregatausdruck sowie eine Spalte einer untergeordneten Tabelle, wie weiter oben unter VERWEISE AUF PARENT/CHILD-BEZIEHUNGEN beschrieben. Beispiel:
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
Ein Aggregat kann auch für eine einzelne Tabelle durchgeführt werden. Ein Beispiel dafür ist das Erstellen einer Zusammenfassung von Zahlen in der Spalte "Price":
Sum(Price)
Hinweis
Wenn Sie ein Aggregat anhand einer einzelnen Tabelle erstellen, sind keine Gruppierungsfunktionen vorhanden. Stattdessen wird in der Spalte in allen Zeilen derselbe Wert angezeigt.
Wenn eine Tabelle keine Zeilen enthält, geben die Aggregatfunktionen NULL (Nothing in Visual Basic) zurück.
Datentypen lassen sich stets durch Untersuchen der DataType-Eigenschaft einer Spalte bestimmen. Sie können Datentypen auch, wie im folgenden Abschnitt dargestellt, mit der Convert-Funktion konvertieren.
FUNCTIONS
Die folgenden Funktionen werden ebenfalls unterstützt:
CONVERT
Beschreibung |
Konvertiert einen bestimmten Ausdruck in einen angegebenen .NET Framework-Typ. |
Syntax |
Convert(expression, type) |
Argumente |
expression – Der zu konvertierende Ausdruck. type – Der .NET Framework-Typ, in den der Wert konvertiert wird. |
Beispiel: myDataColumn.Expression="Convert(total, 'System.Int32')"
Alle Konvertierungen sind gültig, mit folgenden Ausnahmen: Boolean kann nur in und aus Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String und in sich selbst umgewandelt werden. Char kann in und aus Int32, UInt32, String und in sich selbst umgewandelt werden. DateTime kann nur in und aus String und in sich selbst umgewandelt werden. TimeSpan kann nur in und aus String und in sich selbst umgewandelt werden.
LEN
Beschreibung |
Ruft die Länge einer Zeichenfolge ab. |
Syntax |
LEN(expression) |
Argumente |
expression – Die auszuwertende Zeichenfolge. |
Beispiel: myDataColumn.Expression="Len(ItemName)"
ISNULL
Beschreibung |
Überprüft einen Ausdruck und gibt entweder den überprüften Ausdruck oder einen Ersatzwert zurück. |
Syntax |
ISNULL(expression, replacementvalue) |
Argumente |
expression – Der zu überprüfende Ausdruck. replacementvalue – Wenn der Ausdruck NULL (Nothing in Visual Basic) ist, wird replacementvalue zurückgegeben. |
Beispiel: myDataColumn.Expression="IsNull(price, -1)"
IIF
Beschreibung |
Ruft je nach dem Ergebnis eines logischen Ausdrucks einen von zwei Werten ab. |
Syntax |
IIF(expr, truepart, falsepart) |
Argumente |
expr – Der auszuwertende Ausdruck. truepart – Der Wert der zurückgegeben wird, wenn der Ausdruck True ist. falsepart – Der Wert, der zurückgegeben wird, wenn der Ausdruck False ist. |
Beispiel: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Beschreibung |
Entfernt alle vorangestellten oder nachgestellten Leerraumzeichen, z. B. \r, \n, \t und ' '. |
Syntax |
TRIM(expression) |
Argumente |
expression – Der zu kürzende Ausdruck. |
SUBSTRING
Beschreibung |
Ruft eine Teilzeichenfolge einer angegebenen Länge ab, beginnend an einem angegebenen Punkt in der Zeichenfolge. |
Syntax |
SUBSTRING(expression, start, length) |
Argumente |
expression – Die Quellzeichenfolge für die Teilzeichenfolge. start – Eine ganze Zahl, die den Beginn der Teilzeichenfolge angibt. length – Eine ganze Zahl, die die Länge der Teilzeichenfolge angibt. |
Beispiel: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Hinweis
Sie können die Expression-Eigenschaft zurücksetzen, indem Sie ihr einen NULL-Wert oder eine leere Zeichenfolge zuordnen. Wenn ein Standardwert für die Ausdrucksspalte festgelegt ist, wird allen bereits ausgefüllten Zeilen nach dem Zurücksetzen der Expression-Eigenschaft der Standardwert zugeordnet.
Beispiel
Im folgenden Beispiel werden drei Spalten in einer DataTable erstellt. Die zweite und die dritte Spalte enthalten Ausdrücke. Die zweite berechnet unter Verwendung eines variablen Steuersatzes den Steuerwert, und die dritte addiert das Ergebnis der Berechnung zum Wert der ersten Spalte. Die sich ergebende Tabelle wird in einem DataGrid-Steuerelement angezeigt.
Private Sub CalcColumns()
Dim rate As Single = .0862
dim table as DataTable = New DataTable
' Create the first column.
Dim priceColumn As DataColumn = New DataColumn
With priceColumn
.DataType = System.Type.GetType("System.Decimal")
.ColumnName = "price"
.DefaultValue = 50
End With
' Create the second, calculated, column.
Dim taxColumn As DataColumn = New DataColumn
With taxColumn
.DataType = System.Type.GetType("System.Decimal")
.ColumnName = "tax"
.Expression = "price * 0.0862"
End With
' Create third column
Dim totalColumn As DataColumn = New DataColumn
With totalColumn
.DataType = System.Type.GetType("System.Decimal")
.ColumnName = "total"
.Expression = "price + tax"
End With
' Add columns to DataTable
With table.Columns
.Add(priceColumn)
.Add(taxColumn)
.Add(totalColumn)
End With
Dim row As DataRow= table.NewRow
table.Rows.Add(row)
Dim view As New DataView
view.Table = table
DataGrid1.DataSource = view
End Sub
private void CalcColumns()
{
DataTable table = new DataTable ();
// Create the first column.
DataColumn priceColumn = new DataColumn();
priceColumn.DataType = System.Type.GetType("System.Decimal");
priceColumn.ColumnName = "price";
priceColumn.DefaultValue = 50;
// Create the second, calculated, column.
DataColumn taxColumn = new DataColumn();
taxColumn.DataType = System.Type.GetType("System.Decimal");
taxColumn.ColumnName = "tax";
taxColumn.Expression = "price * 0.0862";
// Create third column.
DataColumn totalColumn = new DataColumn();
totalColumn.DataType = System.Type.GetType("System.Decimal");
totalColumn.ColumnName = "total";
totalColumn.Expression = "price + tax";
// Add columns to DataTable.
table.Columns.Add(priceColumn);
table.Columns.Add(taxColumn);
table.Columns.Add(totalColumn);
DataRow row = table.NewRow();
table.Rows.Add(row);
DataView view = new DataView(table);
dataGrid1.DataSource = view;
}
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0