Sorgunuzdan dönen veriyi bir SqlDataReader’a aktarıyoruz ve daha sonra bunu DataTable’a çevirmek istiyoruz. Bunu bir döngü aracılığı ile de yapabiliriz ama daha kolay bir yolu hatta metodu var.
Metodumuzun adı DataTable sınıfına ait olan “Load” metodudur.
Load’a ait 3 overload vardır.
Bunlardan ilk ikisini göstereceğim.

1’nci overload : Sadece DataReader alır ve LoadOption parametresini default değerinde yani PreserveChanges enum’unu otomatik olarak kullanır.
Örnek:
SqlDataReader reader = SqlHelper.ExecuteReader(…);
DataTable dt = new DataTable();
dt.Load(reader);

2’nci overload : DataReader alır ve bunun yanında LoadOption enum’larından birini alır.
OverwriteChanges: O satır için veri tabanından gelen değerler, kolonların hem orijinal(original) hem de o anki(current) versiyonlarına yazılır. Yani kolonlara ait DataRowVersion.Original ve DataRowVersion.Current versiyonları, veri tabanından gelen değeri gösterir.
PreserveChanges: LoadOption numaralandırıcısının default olarak değeri olan bu seçenekte o satır için veri tabanından gelen değerler, kolonların orijinal(original) versiyonlarına yazılır. O anki versiyonu değiştirilmez.
Upsert: O satır için veri tabanından gelen değerler, kolonların o anki(original) versiyonlarına yazılır. Orijinal versiyonu değiştirilmez.
Ben OverwriteChanges enum’unu tercih ediyorum.
Örnek:
SqlDataReader reader = SqlHelper.ExecuteReader(…);
DataTable dt = new DataTable();
dt.Load(reader, LoadOption.OverwriteChanges);