Freigeben über


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

ArgumentException

Die AutoIncrement-Eigenschaft oder die Unique-Eigenschaft ist auf true festgelegt.

FormatException

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.

InvalidCastException

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.

ArgumentOutOfRangeException

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.

Exception

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

Siehe auch

Referenz

DataColumn-Klasse
DataColumn-Member
System.Data-Namespace