C# DataRow Remove ve Delete Arasındaki Fark
C# programlama dilinde bir DataRow nesnesini bağlı olduğu DataTable 'dan 2 türlü silebiliriz. Bu 2 yöntem Delete ve Remove 'dur. 2 sinin arasındaki farkı inceleyelim..
"Delete()" metodu DataRow nesnesini geri döndürürülebilir şekilde siler. Metodu kullandıktan sonra "Rejectchanges()" metodunu kullanırsak nesne tekrar geri döner.
Eğer Delete() metodundan sonra "AcceptChanges()" 'i çağırırsak nesne fiziksel olarak kaldırılır.
Remove() metodu ise nesneyi kurtarılamayacak şekilde fiziksel olarak siler.
Aşağıdaki örneği inceleyelim..
namespace ConsoleApplicationTest
{
class Program {
static void Main(string[] args) {
//////DATA TABLE YARATIYORUZ
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Ad", typeof(string));
dt.Rows.Add(1, "Gamze");
dt.Rows.Add(2, "Umut");
dt.Rows.Add(3, "Ayşe");
dt.AcceptChanges();
Console.WriteLine("DataTable ın ilk halini Yazdırıyoruz");
for (int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine(dt.Rows[i]["Ad"]);
}
Console.WriteLine();
//DELETE ÖZELLİĞİNE BAKALIM
dt.Rows[0].Delete();
dt.RejectChanges();
Console.WriteLine("DataTable Delete Edilip Reject Edilen Halini Yazdırıyoruz");
for (int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine(dt.Rows[i]["Ad"]);
}
Console.WriteLine();
//Delete i Reject Edersek Eski Haline Geri Döndürebiliyoruz
//ŞİMDİ REMOVE A BAKALIM
dt.Rows.Remove(dt.Rows[0]);
Console.WriteLine("DataTable Remove Edilen Halini Yazdırıyoruz");
for (int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine(dt.Rows[i]["Ad"]);
}
Console.WriteLine();
dt.RejectChanges();
Console.WriteLine("DataTable Remove Edilip Reject Halini Yazdırıyoruz");
for (int i = 0; i < dt.Rows.Count; i++)
{
Console.WriteLine(dt.Rows[i]["Ad"]);
}
Console.ReadLine();
//Remove u Reject Etsek de Geri Döndürülemiyor
}
}
}
Örnekte yarattığımız DataTable nesnemizdeki 3 satırdan (DataRow) 1 'ini "Delete()" metodu ile sildik. Fakat "RejectChanges()" metodunu çağırdığımız için DataTable nesnemiz gene 3 satırdan oluşacaktır.
Daha sonra "Remove()" metodunu kullandığımızda, gene aynı satırı silip (kaldırıp) ve sonrasında da "RejectChanges()" metodunu çağırdığımızda satır sayımızın 2 olacağını yani "RejectChanges()" ile bu satırı geri döndüremediğimizi gördük.
Sizde örnek kodu çalıştırarak sonuçları görebilirsiniz..