Problemi nel copiare una riga da una DataTable ad un altra

mercoledì 22 settembre 2010 - 11.32
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008

Lallost Profilo | Newbie

Vi spiego il mio problema che immagino sia molto semplice ma dal quale non so come uscirne.
Io ho due DataTable, una è popolata e una no. Io voglio copiare solo alcune righe dalla prima e metterle nella seconda per popolarla. Nello specifico voglio copiare tutte le righe della prima DataTable
che alla colonna n° 3 contengono la lettera "A". Il codice che ho scritto è il seguente:

//creazione tabelle
DataTable table1 = new DataTable();
DataTable table2 = new DataTable();

//poi popolo la table1 con un DataAdapter

//in questo ciclo scelgo le righe da aggiungere alla table2
foreach (DataRow rr in table.Rows)
{
if (rr[3].ToString() == "A")
{
table2.Rows.Add(rr);
}
}

L'errore che mi dà quando eseguo il codice è: ArgumentExeption non è stata gestita: La riga appartiene già a un'altra tabella.

Come risolvo? Cosa c'entra il fatto che la riga sia già in un altra tabella? Non la posso aggiungere in un'altra?

AntCiar Profilo | Expert

Ciao.

Passare i valori come hai fatto tu non si può fare perchè effettivamente l'oggetto datarow in questione è gia presente nella prima tabella.
Puoi fare in questo modo: (solo però se le due tabelle sono IDENTICHE come struttura, nessun campo in più, nessun campo in meno)

table2.LoadDataRow(rr.ItemArray, false);

Ciao ciao
Cristian Barca

Lallost Profilo | Newbie

Grazie mille, cosi funziona... però che complicazioni per una cosa cosi semplice.... mah

AntCiar Profilo | Expert

ciao.
Non è tanto una complicazione. Alla fine ogni riga di una tabella è un riferimento ad un oggetto in memoria.
Tu riesci a stare in due parti contemporaneamente? Stessa cosa vale per gli oggetti datarow.
Con il metodo loadDataRow viene creato un nouvo oggetto dataRow e popolato con i valori del riferimento alla riga da copiare.

Ciao ciao
Cristian Barca

Lallost Profilo | Newbie

Ottimo, grazie mille della spiegazione. E' la prima volta che scrivo su sto forum, efficienza perfetta direi :D
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5