Confronto datatable

mercoledì 23 aprile 2008 - 10.06

bluland Profilo | Guru

Salve,

Ho due datatable

table1
table2

dovrei confrontare un campo che hanno in comune 'campo1'

tutti i record di table1 che hanno il campo in comune con table2 devono essere cancellati o almeno filtrati.

Idee su come fare?

Ciao
--------------------
Vincenzo PESANTE
System Engineer

paoval72 Profilo | Senior Member

Di certo sono in ritardo, ma magari può servire per continuare il confronto.
Per trovare la corrispondenza tra due campi la risolverei così (doppio ciclo di foreach annidato):

DataTable dt1; //coi dati
DataTable dt2; //coi dati
//prima controllo che nessunod ei due sia vuoto:
if(dt1.rows.count>0 && dt2.rows.count>0)
foreach (DataRow dr1 in dt1.Rows)
foreach (DataRow dr2 in dt2.Rows)
if (dr1["campo"].ToString==dr2["campo"].ToString())
{
// eseguo un'istruzione: ATTENZIONE a non cancellare o modificare qui le righe, altrimenti l'idice delle tables viene sballato
//piuttosto mi salvo qualche dato e poi, alla fine dei cicli, vado ad eliminare le righe
//oppure mi creo un datatable ( o un dataset) aggiungendo le righe che devo cancellare o modificare e alla fine dei cicli eseguo il command
}
Spero di essere stato utile.
PV

bluland Profilo | Guru

>Di certo sono in ritardo, ma magari può servire per continuare
>il confronto.
>Per trovare la corrispondenza tra due campi la risolverei così
>(doppio ciclo di foreach annidato):
>

Ciao anche io provai questa strada ma non ricordo cosa non funzionava.
> DataTable dt1; //coi dati
> DataTable dt2; //coi dati
>//prima controllo che nessunod ei due sia vuoto:
>if(dt1.rows.count>0 && dt2.rows.count>0)
> foreach (DataRow dr1 in dt1.Rows)
> foreach (DataRow dr2 in dt2.Rows)
>if (dr1["campo"].ToString==dr2["campo"].ToString())
> {
>// eseguo un'istruzione: ATTENZIONE a non cancellare o modificare
>qui le righe, altrimenti l'idice delle tables viene sballato
>//piuttosto mi salvo qualche dato e poi, alla fine dei cicli,
>vado ad eliminare le righe

Forse era qui il problema.

>//oppure mi creo un datatable ( o un dataset) aggiungendo le
>righe che devo cancellare o modificare e alla fine dei cicli
>eseguo il command
> }
> Spero di essere stato utile.
>PV


Cmq quello che dovevo fare era tradotto in T-SQL un Left outer join, lo feci in questo modo, magari puo essere utile:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Ciao e grazie
--------------------
Vincenzo PESANTE
System Engineer
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