Dataview’deki Guid tipindeki kolonlara uygulanan RowFilter için ipucu


Warning: count(): Parameter must be an array or an object that implements Countable in /home/kazimce1/public_html/wp-content/plugins/microkids-related-posts/microkids-related-posts.php on line 645

Dataview içerisinde System.Guid tipindeki herhangi bir kolona filtre uygulamak istediğinizde ilk aklınıza gelen aşağıdaki gibi bir kullanım olacaktır.

DataView dv = new DataView();
dv.RowFilter = "TypeId in ('<guid>', '<guid>', ...)";

Yukarıdaki gibi bir kullanım ilk bakışta normal gibi gözüksede çalışma zamanında problem oluşturacak yada filtre büyüdükçe performans problemleri çıkaracaktır. Hatta uygulama çalışma zamanında “Cannot perform ‘=’ operation on System.Guid and System.String.” hatası verecektir.

Yukarıdaki örnekte Guid’leri filtreye string olarak dahil etmek yerine Convert(expression, type) metodunu kullandığımızda bu problemi önlemiş oluruz.

dv.RowFilter = "TypeId in (Convert('<guid>', 'System.Guid'), 
                           Convert('<guid>', 'System.Guid'))";

Örnek kullanım :

dv.RowFilter = "CustomerID IN (CONVERT('{7F901912-DD67-47B9-A5B3-B702B9F84680}','System.Guid'),
                               CONVERT('{85823FC5-1F2E-4034-B1CB-6DEE954AC4D4}','System.Guid')";

Kaynak ;

Convert(expression, type)

0 thoughts on “Dataview’deki Guid tipindeki kolonlara uygulanan RowFilter için ipucu”

Bir cevap yazın