DataColumn.Expression Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Satırları filtrelemek, bir sütundaki değerleri hesaplamak veya bir toplama sütunu oluşturmak için kullanılan ifadeyi alır veya ayarlar.
public:
property System::String ^ Expression { System::String ^ get(); void set(System::String ^ value); };
public string Expression { get; [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from types used in the expressions may be trimmed if not referenced directly.")] set; }
public string Expression { get; set; }
[System.Data.DataSysDescription("DataColumnExpressionDescr")]
public string Expression { get; set; }
[<set: System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from types used in the expressions may be trimmed if not referenced directly.")>]
member this.Expression : string with get, set
member this.Expression : string with get, set
[<System.Data.DataSysDescription("DataColumnExpressionDescr")>]
member this.Expression : string with get, set
Public Property Expression As String
Özellik Değeri
Bir sütunun değerini hesaplamak veya bir toplama sütunu oluşturmak için bir ifade. bir ifadenin dönüş türü sütunu tarafından DataType belirlenir.
- Öznitelikler
Özel durumlar
AutoIncrement or Unique özelliği olarak trueayarlanır.
ÇEVİr işlevini kullanırken, ifade bir dize olarak değerlendirilir, ancak dize tür parametresine dönüştürülebilecek bir gösterim içermez.
CONVERT işlevini kullanırken, istenen atama mümkün değildir. Olası atamalar hakkında ayrıntılı bilgi için aşağıdaki bölümdeki Dönüştürme işlevine bakın.
ALT DIZE işlevini kullandığınızda, başlangıç bağımsız değişkeni aralık dışındadır.
-Veya-
ALT DIZE işlevini kullandığınızda uzunluk bağımsız değişkeni aralık dışındadır.
UZUNLUK işlevini veya KIRP işlevini kullandığınızda, ifade bir dize olarak değerlendirilmez. Bu, olarak değerlendirilen Charifadeleri içerir.
Örnekler
Aşağıdaki örnek, içinde DataTableüç sütun oluşturur. İkinci ve üçüncü sütunlar ifadeler içerir; ikincisi, değişken bir vergi oranı kullanarak vergiyi hesaplar ve üçüncüsü hesaplamanın sonucunu ilk sütunun değerine ekler. Sonuçta elde edilen tablo bir DataGrid denetimde görüntülenir.
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;
}
Private Sub CalcColumns()
Dim rate As Single = .0862
Dim table As New DataTable()
' Create the first column.
Dim priceColumn As New DataColumn()
With priceColumn
.DataType = System.Type.GetType("System.Decimal")
.ColumnName = "price"
.DefaultValue = 50
End With
' Create the second, calculated, column.
Dim taxColumn As New DataColumn()
With taxColumn
.DataType = System.Type.GetType("System.Decimal")
.ColumnName = "tax"
.Expression = "price * 0.0862"
End With
' Create third column
Dim totalColumn As 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
Açıklamalar
Ö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"
Note
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.
Operators
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:
- <
- >
- <=
- >=
- =
INLIKE
İ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)
Note
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.
Functions
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)
| Argument | Description |
|---|---|
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)
| Arguments | Description |
|---|---|
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)
| Arguments | Description |
|---|---|
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)
| Arguments | Description |
|---|---|
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)
| Argument | Description |
|---|---|
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)
| Argument | Description |
|---|---|
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)"
Note
Ö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.