Aracılığıyla paylaş


System.Data.DataColumn.Expression özelliği

Uyarı

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

Özelliği ColumnName kullanarak sütunlara başvurmak için bir ifade oluşturun. Örneğin, bir sütunun ColumnName değeri "UnitPrice" ve başka bir "Miktar" ise ifade şu şekildedir:

"UnitPrice * Quantity"

Uyarı

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, istisna fırlatılmaz. Şimdi bozuk olan ifade sütununa erişildiğinde, bir özel durum fırlatılacak.

Filtre için bir ifade oluşturduğunuzda, dizeleri tek tırnakla belirtin.

"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 ']' ve '\' karakterlerinin önüne ters eğik çizgi ("\") karakteri eklenerek kaçış yapılması gerekir. Diğer karakterler için bu gerekmez. Sütun adı ters eğik aksan karakterleri içine alınmışsa, hiçbir ters eğik aksan 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 karakteri, önüne başka bir tek tırnak karakteri eklenerek kaçış karakteriyle belirtilmelidir). 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 ve bilimsel gösterim, sayısal değerler için uygundur. Ö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"

Sözdizimsel ifadeleri ayrıştırma

Tüm harfiyen ifadeler değişmez kültür yerel ayarında ifade edilmelidir. Sabit ifadeleri DataSet ayrıştırıp dönüştürdüğünde, her zaman mevcut kültürü değil değişmez 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ğerler true ve false şeklindedir; ifadelerde tırnak içine alınmazlar.

Integer değişmez değerler [+-]?[0-9]+ System.Int32, System.Int64 veya System.Double olarak 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ı bir Int32 olarak 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 Int64 olarak ayrıştırır, bu da başarılı olur. Değişmez değer bir Int64'ün maksimum değerinden büyük bir sayıysa, DataSet kullanarak Doubledeğişmez değeri ayrıştırıyor.

Bilimsel gösterimi, örneğin 4.42372E-30 gibi, kullanan gerçek sabitler System.Double kullanılarak ayrıştırılır.

Bilimsel gösterimi olmayan ancak ondalık nokta içeren gerçek değişmez değerler olarak System.Decimaldeğerlendirilir. Sayı tarafından System.Decimaldesteklenen en yüksek veya en düşük değerleri aşarsa, olarak System.Doubleayrıştırılır. Örneğin:

  • 142526.144524, bir Decimal'ye dönüştürülür.
  • 345262.78036719560925667 bir Doubleolarak değerlendirilir.

Operatörler

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. CaseSensitive sınıfının DataSet özelliğinin 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 CaseSensitiveDataTable ö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. Eğer LIKE yan tümcesindeki dize * veya % içeriyorsa, bu karakterler köşeli ayraçlar ([]) içine alınmalıdır. Eğer bir köşeli ayraç yan tümcede bulunuyorsa, her bir 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.

Ebeveyn/çocuk ilişkisi başvurma

Bir ifadede ana tabloya, sütun adının önüne Parent ekleyerek referans verilebilir. Örneğin, Parent.Price üst tablodaki Price adlı sütunu referans alır.

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ütun, sütun adının başına Child eklenerek bir ifadede referans alınabilir. Ancak, alt ilişkiler birden çok satır döndürebileceğinden, alt sütuna olan referansı bir toplama fonksiyonu içinde kullanmanız gerekir. Örneğin, Sum(Child.Price) alt tablodaki adı Price olan sütunun toplamını döndürür.

Tabloda birden fazla alt öğe varsa söz dizimi şöyledir: Child(RelationName). Örneğin, bir tabloda Customers ve Orders adlı iki alt tablo varsa ve DataRelation adlı nesnenin 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)

Birleştirmeler genellikle ilişkiler üzerinden gerçekleştirilir. Daha önce listelenen işlevlerden birini ve Ebeveyn/çocuk ilişki referansı bölümünde ayrıntılı olarak açıklandığı gibi bir çocuk 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)

Uyarı

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, toplayıcı fonksiyonlar null döndürür.

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)
Tartışma 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 aşağıdaki istisnalarla geçerlidir: Boolean yalnızca Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String ve kendisiyle zorlama yapılabilir ve içinden dönüştürülebilir. Char, Int32, UInt32, String ve yalnızca kendisine zorunlu olarak çevrilebilir. DateTime, yalnızca String ve kendisi arasında dönüştürülebilir. TimeSpan, yalnızca String ve kendisi arasında dönüştürülebilir.

LEN

Bu işlev bir dizenin uzunluğunu alır.

LEN(expression)
Tartışmalar 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)
Tartışmalar Açıklama
expression Kontrol edilecek ifade.
replacementvalue Eğer ifade null ise, 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)
Tartışmalar Açıklama
expr Değerlendirilecek ifade.
truepart İfade doğruysa döndürülecek değer.
falsepart İfade yanlışsa 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)
Tartışma 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)
Tartışma 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)"

Uyarı

Ö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.