System.Data.DataColumn.Expression tulajdonság

Megjegyzés:

Ez a cikk kiegészítő megjegyzéseket tartalmaz az API referenciadokumentációjához.

A tulajdonság egyik használati módja a számított Expression oszlopok létrehozása. Egy adóérték kiszámításához például az egységár megszorozva van egy adott régió adómértékével. Mivel az adókulcsok régiónként eltérőek, lehetetlen egyetlen adókulcsot elhelyezni egy oszlopban; ehelyett az érték kiszámítása a Expression tulajdonság használatával történik, ahogyan az a következő kódban is látható:

DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"

A második lehetőség egy összesített oszlop létrehozása. A számított értékhez hasonlóan az összesítés a DataTable teljes sorhalmaza alapján hajt végre műveletet. Egy egyszerű példa a készletben visszaadott sorok számának megszámlálása. Ez az a módszer, amelyet egy adott értékesítő által végrehajtott tranzakciók számának megszámlálásához használna, ahogyan az az alábbi kódban is látható:

DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"

Kifejezés szintaxisa

Kifejezés létrehozásakor használja a tulajdonságot az ColumnName oszlopokra való hivatkozáshoz. Ha például az ColumnName egyik oszlop értéke "UnitPrice", a másik pedig "Mennyiség", akkor a kifejezés a következő:

"UnitPrice * Quantity"

Megjegyzés:

Ha egy kifejezésben oszlopot használnak, akkor a rendszer azt mondja, hogy a kifejezés függ az adott oszloptól. Ha egy függő oszlopot átneveznek vagy eltávolítanak, a rendszer nem ad kivételt. A rendszer kivételt dob, amikor a most már hibás kifejezésoszlopot elérik.

Amikor létrehoz egy kifejezést egy szűrőhöz, a karakterláncokat zárja be egyes idézőjel közé:

"LastName = 'Jones'"

Ha egy oszlopnév nem alfanumerikus karaktereket tartalmaz, számjegygel kezdődik, vagy a következő fenntartott szavak bármelyikével (kis- és nagybetűkkel) egyezik, speciális kezelést igényel az alábbi bekezdésekben leírtak szerint.

And

Between

Child

False

In

Is

Like

Not

Null

Or

Parent

True

Ha egy oszlopnév megfelel az előző feltételek egyikének, akkor szögletes zárójelbe vagy "'" (ékezetes) idézőjelek közé kell burkolni. Ha például egy "Oszlop#" nevű oszlopot szeretne használni egy kifejezésben, a következőt kell írnia: "[Oszlop#]" vagy "Oszlop#":

Total * [Column#]

Ha az oszlop neve szögletes zárójelek közé van foglalva, akkor a benne lévő ']' és '\' karaktereket (de más karaktereket nem) meg kell szökni úgy, hogy eléjük tesszük a fordított perjel ("\") karaktert. Ha az oszlop neve sírjelek közé van ágyazva, akkor nem tartalmazhat sírjeleket. Egy "Column[]\" nevű oszlop például a következő lesz:

Total * [Column[\]\\]

vagy

Összesen * `Oszlop[]\`

Felhasználó által definiált értékek

A felhasználó által definiált értékek az oszlopértékekkel összehasonlítandó kifejezésekben használhatók. A sztringértékeket egyes idézőjelek közé kell zárni (és a sztringértékben minden egyes egyes idézőjelet egy másik egyes idézőjellel kell megadni). A dátumértékeket az adatszolgáltatótól függően fontjelek (#) vagy egy idézőjelek (') közé kell tenni. Numerikus értékek esetében a tizedesvessző és a tudományos jelölés megengedett. Például:

"FirstName = 'John'"

"Price <= 50.00"

"Birthdate < #1/31/2006#"

Az enumerálási értékeket tartalmazó oszlopok esetében az értéket egész szám adattípusra kell leadni. Például:

"EnumColumn = 5"

Literális kifejezések elemzése

Az összes literális kifejezést az invariáns kulturális területi beállításban kell kifejezni. A literális kifejezések elemzésekor és konvertálásakor DataSet mindig az invariáns kultúrát használja, nem a jelenlegi kultúrát.

A sztringkonstansokat akkor azonosítja a rendszer, ha egyetlen idézőjel található az érték körül. Például: 'John'.

Boolean és truefalse literálok; a kifejezésekben nem idézik őket.

Integer literálok [+-]?[0-9]+ értékeket mint System.Int32, System.Int64 vagy System.Double kezeli a rendszer. System.Double pontossága a szám nagyságától függően csökkenhet. Ha például a literális szám 2147483650, DataSet először megkísérli a számot Int32-ként elemezni. Ez nem fog sikerülni, mert a szám túl nagy. Ebben az esetben a DataSet elemezni próbálja a számot mint Int64, ami sikeres lesz. Ha a literál egy Int64 maximális értékénél nagyobb szám, DataSet akkor a literál elemzése a következővel történik Double: .

A tudományos jelölést (például 4.42372E-30) használó valós literálokat a System.Double használatával elemzik.

A valódi, tudományos jelölés nélküli, de decimális ponttal rendelkező literálokat a rendszer úgy kezeli, mint System.Decimal. Ha a szám meghaladja a támogatott System.Decimalmaximális vagy minimális értékeket, akkor a rendszer a következőképpen elemzi System.Doublea számot. Például:

  • A 142526.144524 konvertálva lettDecimal.
  • A 345262.78036719560925667-et Double-ként kezelik.

Működtetők

Az összefűzés logikai ÉS, OR és NOT operátorokkal engedélyezett. Zárójelek használatával csoportosíthatja a kifejezéseket, és megadhatja az elsőbbséget. Az AND operátor elsőbbséget élvez más operátorokkal szemben. Például:

(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

Összehasonlító kifejezések létrehozásakor a következő operátorok engedélyezettek:

  • <
  • >
  • <=
  • >=
  • =
  • IN
  • LIKE

A kifejezésekben a következő aritmetikai operátorok is támogatottak:

  • + (kiegészítés)
  • - (kivonás)
  • * (szorzás)
  • / (osztás)
  • % (moduló)

Karakterlánc operátorok

Sztring összefűzéséhez használja a karaktert + . A CaseSensitive osztály DataSet tulajdonságának értéke határozza meg, hogy a sztring-összehasonlítások megkülönböztetik-e a kis- és nagybetűket. Ezt az értéket azonban felülbírálhatja az CaseSensitiveDataTable osztály tulajdonságával.

Helyettesítő karakterek

A * és % karakterek egyaránt használhatók helyettesítő karakterekként a LIKE összehasonlításban. Ha a LIKE záradék sztringje tartalmaz egy * vagy %, ezeket a karaktereket szögletes zárójelek közé kell tenni ([]). Ha egy szögletes zárójel szerepel a záradékban, minden szögletes zárójel karaktert szögletes zárójelek közé kell tenni (például [[] vagy []]). A helyettesítő karakter a minta elején és végén, vagy csak a minta végén, illetve csak a minta elején is engedélyezett. Például:

  • "ItemName LIKE '*product*'"
  • "ItemName LIKE '*product'"
  • "ItemName LIKE 'product*'"

Karakterlánc közepén helyettesítő karakterek nem használhatók. A 'te*xt' például nem engedélyezett.

Szülő-gyermek kapcsolatra való hivatkozás

Egy szülőtábla egy kifejezésben úgy hivatkozható, hogy az oszlop nevét Parent-vel előtagoljuk. Hivatkozik például Parent.Price a szülőtábla nevesített Priceoszlopára.

Amikor egy gyermeknek több szülősora van, használja Parent(RelationName).ColumnName. Például a Parent(RelationName).Price a szülőtábla "Ár" nevű oszlopára hivatkozik a kapcsolaton keresztül.

Egy gyermektábla oszlopára hivatkozhat egy kifejezésben az oszlop neve elé Child előtagot helyezve. Mivel azonban a gyermekkapcsolatok több sort is visszaadhatnak, a gyermekoszlopra mutató hivatkozást egy összesítő függvényben kell szerepeltetni. Például Sum(Child.Price) a gyermektáblában elnevezett Price oszlop összegét adja vissza.

Ha egy tábla több gyermekből áll, a szintaxis a következő: Child(RelationName). Ha például egy táblának két gyermektáblája van, Customers és Ordersaz DataRelation objektum neve el van nevezve Customers2Orders, a hivatkozás a következő:

Avg(Child(Customers2Orders).Quantity)

Aggregátumok

A következő összesítési típusok támogatottak:

  • Sum (Összeg)
  • Avg (Átlag)
  • Min (Minimális)
  • Max (Maximális)
  • Count (Darabszám)
  • StDev (Statisztikai szórás)
  • Var (Statisztikai eltérés)

Az aggregátumok általában kapcsolatok mentén vannak végrehajtva. Hozzon létre egy összesített kifejezést a korábban felsorolt függvények egyikével és egy gyermektábla oszlopával a Szülő/gyermek kapcsolat hivatkozásában leírtak szerint. Például:

  • Avg(Child.Price)
  • Avg(Child(Orders2Details).Price)

Az összesítés egyetlen táblán is elvégezhető. Például a számok összegzésének létrehozása egy "Price" nevű oszlopban:

Sum(Price)

Megjegyzés:

Ha egyetlen táblát használ az összesítés létrehozásához, akkor nem lesznek csoportosítási funkciók. Ehelyett minden sor ugyanazt az értéket jeleníti meg az oszlopban.

Ha egy táblának nincsenek sorai, az összesítő függvények null értéket adnak vissza.

Az adattípusok mindig meghatározhatók egy DataType oszlop tulajdonságának vizsgálatával. Az adattípusokat a Convert függvény használatával is konvertálhatja, az alábbi szakaszban látható módon.

Az összesítés csak egyetlen oszlopra alkalmazható, és az összesítésen belül más kifejezés nem használható.

Functions

Az alábbi függvények is támogatottak.

CONVERT

Ez a függvény egy kifejezést egy megadott .NET-típussá alakít át.

Convert(expression, type)
érvelés Leírás
expression Az átalakítandó kifejezés.
type .NET-típus, amelyre az érték konvertálva lesz.

Példa: myDataColumn.Expression="Convert(total, 'System.Int32')"

Az összes konverzió a következő kivételekkel érvényes: Boolean csak Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String és önmagára kényszeríthető. Char csak a Int32, UInt32, String és önmagára kényszeríthető. DateTime csak String és önmaga között kényszeríthető át. TimeSpan csak String és önmaga között kényszeríthető át.

LEN

Ez a függvény egy karakterlánc hosszát adja vissza.

LEN(expression)
Érvek Leírás
expression A kiértékelendő karakterlánc.

Példa: myDataColumn.Expression="Len(ItemName)"

ISNULL

Ez a függvény egy kifejezést ellenőriz, és vagy az ellenőrzött kifejezést vagy egy helyettesítő értéket ad vissza.

ISNULL(expression, replacementvalue)
Érvek Leírás
expression Az ellenőrizni kívánt kifejezés.
replacementvalue Ha a kifejezés null, akkor replacementvalue kerül visszaadásra.

Példa: myDataColumn.Expression="IsNull(price, -1)"

IIF

Ez a függvény egy logikai kifejezés eredményétől függően két érték egyikét kapja meg.

IIF(expr, truepart, falsepart)
Érvek Leírás
expr A kiértékelendő kifejezés.
truepart A visszaadandó érték, ha a kifejezés igaz.
falsepart A visszaadandó érték, ha a kifejezés hamis.

Példa: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')

TRIM

Ez a függvény eltávolítja az összes kezdő és záró üres karaktert, például \r, \n, \t és ' ' karaktert.

TRIM(expression)
érvelés Leírás
expression A levágni kívánt kifejezés.

SUBSTRING

Ez a függvény egy megadott hosszúságú részszúrást kap, amely a sztring egy megadott pontján kezdődik.

SUBSTRING(expression, start, length)
érvelés Leírás
expression Az alkarakterlánc forráskarakterlánca
start Egész szám, amely meghatározza, hogy hol kezdődik a részszöveg.
length Az alsztring hosszát meghatározó egész szám.

Példa: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"

Megjegyzés:

A tulajdonság alaphelyzetbe állításához Expression null értéket vagy üres karakterláncot rendelhet hozzá. Ha a kifejezés oszlopában egy alapértelmezett érték van beállítva, a rendszer a tulajdonság alaphelyzetbe állítása után az összes korábban kitöltött sort hozzárendeli az Expression alapértelmezett értékhez.