DataTable içinde arama

DataTable içinde arama yapmak bizi gereksiz yere sistem kaynaklarını meğul etmekden kurtarır. Müşteri isimleri arasında harf harf arama yaptıgınızı düşünürsek her harf için gidip SQL den sorgu çalıştırmak çokda mantıklı değil. Hem performası olumsuz etkiler hemde diğer kullanıcılar için yeterince kayank bırakmış olursunuz. Tek kullanıcı yada kendi lokalinde çalışan bir program belki çok problem yaratmaz ama 10 000 ler ce kaydın oldugu hatta 20-30 kullanıcının aynı sisteme bağlanıp sorgu çektigimi düşünmek kabus gibi:)
!!!! Not: Anlık değişebilecek kayıtlar için kullanımı uygun değildir. Stok durumunu takip eden bi arayünüz oldugunu düşünürsek. sabah x üründen 10 tane vardı işiniz çıktı gittiniz 3 saat sonra geldiniz ve siz dışardayken bu x ürününden 10 tane sipariş geldi ve satıldı. Siz tekrar veritabanına bağlanmadıgınız için hala sizde 10 tane x ürünü görünür buda içinden çıkılmaz bir hataya yol açar.

public DataTable dtAra(string Filtre, DataTable KaynakVeriKumesi)
{
DataTable yeniDataTable = new DataTable(); //en son döndermek işin kullanacagımız boş bir dataTable tanımladık.

yeniDataTable = KaynakVeriKumesi.Copy(); //bize içini doldurmak işin kolonlara ihtiyacımız var. Yani tablo iskeleti lazım.

yeniDataTable.Clear(); // Row lara ihtiyacımız yok...

DataRow[] dr = KaynakVeriKumesi.Select("Musteri_ like '" + Filtre + "%'", "Musteri_ DESC", DataViewRowState.CurrentRows);

// DataTable select metodu bize dataRow dizisi dönderir. Burda sql select ifadesinde where kısmında kullandıgmız herşeyi aynen kullanabiliriz.
// DataRow dizisini sonuna kadar okuyarak önceden aldıgımız dataTable 'a select metodundan dönen satırlar aktırılıyor.

foreach (DataRow Sonuclar in dr)
{
DataRow dr2 = yeniDataTable.NewRow();
dr2[0] = Sonuclar[0];
dr2[1] = Sonuclar[1];
yeniDataTable.Rows.Add(dr2);
}
return yeniDataTable; // dönen satırlar metot dışına fırlatıyor.
}

Yorum Gönder