System.Data.DataColumn.Expression özelliği
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
Özelliğinin Expression bir kullanımı hesaplanmış sütunlar oluşturmaktır. Örneğin, vergi değerini hesaplamak için birim fiyatı belirli bir bölgenin vergi oranıyla çarpılır. Vergi oranları bölgeden bölgeye farklılık gösterdiğinden, bir sütuna tek bir vergi oranı koymak mümkün değildir; bunun yerine değer, aşağıdaki kodda gösterildiği gibi özelliği kullanılarak Expression hesaplanır:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
İkinci bir kullanım da toplama sütunu oluşturmaktır. Hesaplanan değere benzer şekilde, bir toplama işlemi içindeki DataTabletüm satır kümesini temel alarak gerçekleştirir. Basit bir örnek, kümede döndürülen satır sayısını saymaktır. Bu, aşağıdaki kodda gösterildiği gibi belirli bir satış temsilcisi tarafından tamamlanan işlem sayısını saymak için kullanacağınız yöntemdir:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
İfade söz dizimi
bir ifade oluşturduğunuzda, sütunlara başvurmak için özelliğini kullanın ColumnName . Örneğin, bir sütunun ColumnName değeri "UnitPrice" ve başka bir "Miktar" ise ifade şu şekildedir:
"UnitPrice * Quantity"
Not
Bir ifadede sütun kullanılıyorsa, ifadenin bu sütuna bağımlılığı olduğu söylenir. Bağımlı bir sütun yeniden adlandırılır veya kaldırılırsa, özel durum oluşturmaz. Şimdi bozuk ifade sütununa erişildiğinde bir özel durum oluşturulur.
Filtre için ifade oluşturduğunuzda, dizeleri tek tırnak içine alın:
"LastName = 'Jones'"
Sütun adı alfasayısal olmayan karakterler içeriyorsa, bir rakamla başlıyorsa veya aşağıdaki ayrılmış sözcüklerden herhangi biriyle eşleşiyorsa (büyük/küçük harfe duyarsız) aşağıdaki paragraflarda açıklandığı gibi özel işleme gerektirir.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Sütun adı önceki koşullardan birini karşılarsa köşeli ayraç veya "'" (vurgu) tırnak içine sarmalanmalıdır. Örneğin, ifadede "Column#" adlı bir sütun kullanmak için "[Sütun#]" veya "'Sütun#'" yazabilirsiniz:
Total * [Column#]
Sütun adı köşeli ayraç içine alınmışsa, içindeki tüm ']' ve '\' karakterlerinin (ancak diğer karakterlerin değil) ters eğik çizgi ("\") karakteriyle önceden ertelenerek kaçış karakterinden kaçılması gerekir. Sütun adı büyük aksan karakterleri içine alınmışsa, herhangi bir vurgu karakteri içermemelidir. Örneğin, "Column[]\" adlı bir sütun yazılabilir:
Total * [Column[\]\\]
veya
Toplam * 'Sütun[]\'
Kullanıcı tanımlı değerler
Kullanıcı tanımlı değerler, sütun değerleriyle karşılaştırılacak ifadeler içinde kullanılabilir. Dize değerleri tek tırnak içine alınmalıdır (ve bir dize değerindeki her tek tırnak karakterinin, başka bir tek tırnak karakteriyle önceden iliştirilerek kaçış karakterinden çıkılması gerekir). Tarih değerleri, veri sağlayıcısına göre pound işaretleri (#) veya tek tırnak (') içine alınmalıdır. Ondalık değerler ve bilimsel gösterim, sayısal değerler için izin verilebilir. Örneğin:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
Numaralandırma değerleri içeren sütunlar için değeri bir tamsayı veri türüne yayın. Örneğin:
"EnumColumn = 5"
Değişmez değer ifadelerini ayrıştırma
Tüm değişmez ifadeler sabit kültür yerel ayarında ifade edilmelidir. Değişmez ifadeleri ayrıştırıp DataSet
dönüştürdüğünde, her zaman geçerli kültürü değil sabit kültürü kullanır.
Dize değişmez değerleri, değeri çevreleyen tek tırnaklar olduğunda tanımlanır. Örneğin, 'John'
.
Boolean
değişmez değerleri ve false
şeklindedirtrue
; ifadelerde tırnak içinde yer almaz.
Integer
değişmez değerler [+-]? [0-9]+ , System.Int64
veya System.Double
olarak System.Int32
değerlendirilir. System.Double
, sayinin ne kadar büyük olduğuna bağlı olarak duyarlığı kaybedebilir. Örneğin, değişmez değerdeki sayı 2147483650 ise, DataSet
önce sayıyı olarak Int32
ayrıştırmaya çalışır. Sayı çok büyük olduğundan bu işlem başarılı olmaz. Bu durumda DataSet
, sayıyı bir olarak Int64
ayrıştırarak başarılı olur. Değişmez değer bir Int64'ün maksimum değerinden büyük bir sayıysa, DataSet
kullanarak Double
değişmez değeri ayrıştırıyor.
Bilimsel gösterimi kullanan 4.42372E-30 gibi gerçek değişmez değerler kullanılarak System.Double
ayrıştırılır.
Bilimsel gösterimi olmayan ancak ondalık nokta içeren gerçek değişmez değerler olarak System.Decimal
değerlendirilir. Sayı tarafından System.Decimal
desteklenen en yüksek veya en düşük değerleri aşarsa, olarak System.Double
ayrıştırılır. Örneğin:
- 142526.144524, öğesine
Decimal
dönüştürülür. - 345262.78036719560925667 bir
Double
olarak değerlendirilir.
İşleçler
Boolean AND, OR ve NOT işleçleri kullanılarak birleştirmeye izin verilir. Yan tümceleri gruplandırmak ve önceliği zorlamak için parantez kullanabilirsiniz. AND işleci diğer işleçlere göre önceliklidir. Örneğin:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Karşılaştırma ifadeleri oluşturduğunuzda aşağıdaki işleçlere izin verilir:
- <
- >
- <=
- >=
- =
IN
LIKE
İfadelerde aşağıdaki aritmetik işleçler de desteklenir:
- + (toplama)
- - (çıkarma)
- * (çarpma)
- / (bölme)
- % (modül)
Dize işleçleri
Bir dizeyi birleştirmek için karakterini kullanın +
. sınıfının özelliğinin CaseSensitive DataSet değeri, dize karşılaştırmalarının büyük/küçük harfe duyarlı olup olmadığını belirler. Ancak, bu değeri sınıfın CaseSensitive DataTable özelliğiyle geçersiz kılabilirsiniz.
Joker karakterler
Like karşılaştırmasında *
joker karakterler için hem hem de %
karakterleri birbirinin yerine kullanılabilir. LIKE yan tümcesindeki dize veya *
%
içeriyorsa, bu karakterler köşeli ayraç ([]
) içine alınmalıdır. Köşeli ayraç yan tümcesindeyse, her köşeli ayraç karakteri köşeli ayraç içine alınmalıdır (örneğin [[]
veya []]
). Bir desenin başında ve sonunda, desenin sonunda veya desenin başında joker karaktere izin verilir. Örneğin:
"ItemName LIKE '*product*'"
"ItemName LIKE '*product'"
"ItemName LIKE 'product*'"
Dizenin ortasında joker karakterlere izin verilmez. Örneğin, 'te*xt'
izin verilmez.
Üst/alt ilişki başvuru
Bir ifadede üst tabloya, sütun adı ile Parent
ön koşula bağlı olarak başvurulabilir. Örneğin, Parent.Price
üst tablonun adlı Price
sütununa başvurur.
Bir alt öğede birden fazla üst satır olduğunda kullanın Parent(RelationName).ColumnName
. Örneğin, Parent(RelationName).Price
ilişki aracılığıyla üst tablonun "Price" adlı sütununa başvurur.
Bir alt tablodaki sütuna, sütun adı ile Child
ön koşula bağlı olarak ifadede başvurulabilir. Ancak, alt ilişkiler birden çok satır döndürebileceğinden, alt sütuna başvuruyu bir toplama işlevine eklemeniz gerekir. Örneğin, Sum(Child.Price)
alt tabloda adlı Price
sütunun toplamını döndürür.
Tabloda birden fazla alt öğe varsa söz dizimi şöyledir: Child(RelationName)
. Örneğin, bir tabloda ve Orders
adlı Customers
iki alt tablo varsa ve nesnenin DataRelation adı Customers2Orders
ise, başvuru aşağıdaki gibi olacaktır:
Avg(Child(Customers2Orders).Quantity)
Toplamlar
Aşağıdaki toplama türleri desteklenir:
Sum
(Toplam)Avg
(Ortalama)Min
(Minimum)Max
(En fazla)Count
(Sayı)StDev
(İstatistiksel standart sapma)Var
(İstatistiksel varyans)
Toplamalar normalde ilişkiler boyunca gerçekleştirilir. Daha önce listelenen işlevlerden birini ve Üst/alt ilişki başvuru bölümünde ayrıntılı olarak açıklandığı gibi bir alt tablo sütununu kullanarak bir toplama ifadesi oluşturun. Örneğin:
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
Toplama işlemi tek bir tabloda da gerçekleştirilebilir. Örneğin, "Price" adlı bir sütunda şekillerin özetini oluşturmak için:
Sum(Price)
Not
Toplama oluşturmak için tek bir tablo kullanırsanız gruplandırma işlevi olmaz. Bunun yerine, tüm satırlar sütunda aynı değeri görüntüler.
Tabloda satır yoksa, toplama işlevleri döndürür null
.
Veri türleri her zaman bir sütunun DataType özelliği incelenerek belirlenebilir. Aşağıdaki bölümde gösterilen işlevini kullanarak Convert
veri türlerini de dönüştürebilirsiniz.
Toplama yalnızca tek bir sütuna uygulanabilir ve toplama içinde başka ifade kullanılamaz.
İşlevler
Aşağıdaki işlevler de desteklenir.
CONVERT
Bu işlev, bir ifadeyi belirtilen .NET türüne dönüştürür.
Convert(expression, type)
Bağımsız değişken | Açıklama |
---|---|
expression |
Dönüştürülecek ifade. |
type |
Değerin dönüştürüleceği .NET türü. |
Örnek: myDataColumn.Expression="Convert(total, 'System.Int32')"
Tüm dönüştürmeler şu özel durumlarla geçerlidir: Boolean
yalnızca , SByte
, Int16
, Int32
, , Int64
, UInt16
, , UInt32
UInt64
String
ve kendisinde ve içinden Byte
zorlama yapılabilir. Char
, , UInt32
String
ve yalnızca kendisi için ve bu kaynaklardan Int32
zorunlu olabilir. DateTime
yalnızca kendisine ve kendisine String
zorlamalı olabilir. TimeSpan
yalnızca kendisine ve kendisine String
zorlamalı olabilir.
LEN
Bu işlev bir dizenin uzunluğunu alır.
LEN(expression)
Bağımsız Değişkenler | Açıklama |
---|---|
expression |
Değerlendirilecek dize. |
Örnek: myDataColumn.Expression="Len(ItemName)"
ISNULL
Bu işlev bir ifadeyi denetler ve denetlenen ifadeyi veya değiştirme değerini döndürür.
ISNULL(expression, replacementvalue)
Bağımsız Değişkenler | Açıklama |
---|---|
expression |
Denetlenecek ifade. |
replacementvalue |
ifadesi ise null replacementvalue döndürülür. |
Örnek: myDataColumn.Expression="IsNull(price, -1)"
IIF
Bu işlev, mantıksal ifadenin sonucuna bağlı olarak iki değerden birini alır.
IIF(expr, truepart, falsepart)
Bağımsız Değişkenler | Açıklama |
---|---|
expr |
Değerlendirilecek ifade. |
truepart |
İfade true ise döndürülecek değer. |
falsepart |
İfade false ise döndürülecek değer. |
Örnek: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Bu işlev , \r, \n, \t ve ' ' gibi baştaki ve sonundaki tüm boş karakterleri kaldırır.
TRIM(expression)
Bağımsız değişken | Açıklama |
---|---|
expression |
Kırpacak ifade. |
SUBSTRING
Bu işlev, dizede belirtilen bir noktadan başlayarak belirtilen uzunlukta bir alt dize alır.
SUBSTRING(expression, start, length)
Bağımsız değişken | Açıklama |
---|---|
expression |
Alt dize için kaynak dize |
start |
Alt dizenin nerede başlatıldığını belirten tamsayı. |
length |
Alt dizenin uzunluğunu belirten tamsayı. |
Örnek: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Not
Özelliği null değer veya boş dize atayarak sıfırlayabilirsiniz Expression . İfade sütununda varsayılan bir değer ayarlanırsa, özellik sıfırlandıktan sonra Expression önceden doldurulmuş tüm satırlara varsayılan değer atanır.