Aracılığıyla paylaş


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

Booleandeğişmez değerleri ve falseşeklindedirtrue; ifadelerde tırnak içinde yer almaz.

Integerdeğişmez değerler [+-]? [0-9]+ , System.Int64veya System.Doubleolarak System.Int32değ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 Int32ayrış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 Int64ayrış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 Doubledeğ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.Doubleayrış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, öğesine Decimaldönüştürülür.
  • 345262.78036719560925667 bir Doubleolarak 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ı Pricesü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 Ordersadlı Customers iki alt tablo varsa ve nesnenin DataRelation adı Customers2Ordersise, 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, , UInt32UInt64String ve kendisinde ve içinden Bytezorlama yapılabilir. Char, , UInt32Stringve yalnızca kendisi için ve bu kaynaklardan Int32zorunlu 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 nullreplacementvalue 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.