25 Eylül 2008 Perşembe

.NET : This row already belongs to another table

.NET'te , elimizdeki iki DATATABLE içinde loop yapıp, birinin değerlerini diğerine atmak istediğimizde;
This row already belongs to another table
gibi bir hata vermektir. Yani;
C#
foreach
(DataRow row in dt1.Rows){
if(......){
dt2.Rows.Add(row);
}
}

VB.net
for each row as datarow in dt1.rows
if .... then
dt2.rows.add(row)
endif.
next.
İşlemini yapamamaktayız. Sebebi ise ADD metodunu kullandığımızda, dt1 in referanslarıyla dt2 ye ekleme yapmaya çalışmasıdır.
Burada kullanacağımız metod, datatable nesnesinin IMPORTROW metodudur.

Örnek;

C#
DataTable dt1 = ds.Tables[0];
DataTable dt2 = new DataTable();

dt2 = dt1.Clone(); "sütünların aynı olması için clone şart
foreach(DataRow row in dt1.Rows){
if(......){
dt2.ImportRow(row);
}
}
VB.NET
dim dt1 as datatable = ds.tables(0)
dim dt2 as new datatable

dt2 = dt1.clone
for each row as datarow in dt1.rows
if ..... then
dt2.ImportRow(row)
endif
next


iyi çalışmalar & attığınız şutlara paslara dikkat edin :).

3 yorum:

Unknown dedi ki...

hacı bu importrow yemedi

Turgay Özgür dedi ki...

Oldu teşekkürler.

Unknown dedi ki...

Tableau Data Visualization Software
SQIAR (http://www.sqiar.com/solutions/technology/tableau) is a leading Business Intelligence company and provides Tableau Software consultancy across United Kingdom and USA.