Caricare colonne da un datatable ad un altro

venerdì 22 maggio 2009 - 09.54

pippo_pluto Profilo | Newbie

SAlve...avrei un quesito...se ho un datatable dt contenente ad es. 5 colonne posso creare un datatable x nel quale caricare solo determinate colonne di dt? ad es. la 1a la 3a e la 4a?
grazie

Anonimo Profilo | Senior Member

si certo ti posto una funzione che spero possa esserti utile.

private DataTable getNewTable(DataTable source, string filter) { if (source==null || filter==null || filter.Trim()=="") throw new ArgumentException(); if (source.Columns.Count!=filter.Length) throw new ArgumentException(); try { DataTable dt = new DataTable(); //creo la struttura dati List<string> colonne = new List<string>(); for (int i = 0; i < filter.Length; i++) if (filter[i] == Convert.ToChar("1")) { dt.Columns.Add(new DataColumn(source.Columns[i].ColumnName)); colonne.Add(source.Columns[i].ColumnName); } dt.AcceptChanges(); //sincronizzo i dati foreach (DataRow dr in source.Rows) { DataRow newRow = dt.NewRow(); foreach (string nomeColonna in colonne) newRow[nomeColonna] = dr[nomeColonna]; dt.Rows.Add(newRow); } dt.AcceptChanges(); return (dt.Rows.Count == 0 || dt.Columns.Count == 0) ? null : dt; } catch { return null; } }

Nelle direttive using usa System.Collections e System.Data. Un esempio di chiamata alla funzione potrebbe essere:

DataTable nuovoDataTable = getNewTable(vecchioDataSource, "10110111");

Non ho avuto modo di testarla ma dovrebbe funzionare bene, se hai problemi chiedi pure.

pippo_pluto Profilo | Newbie

WOW...sono senza parole..sei stato gentilissimo!! grazie ancora!

danvagna Profilo | Junior Member

mmmm mi associo a questa discussione per una curiosità...e se invece di ottenere un nuovo datatable volessi fare la seguente cosa? ho un datatable a1 e un datatable a2 e vorrei avere a1 con tutte le sue colonne e in più alcune colonne di a2...sarebbe possibile farlo?

danvagna Profilo | Junior Member

ho provato a modificare il codice in questo modo ma il problema è che quando mi aggiunge la colonna comincia a scrivere i dati dall ultima casella scritta..nel senso se ho n colonne di 25 record...la colonna n+1 sarà riempita a partire dal 26esimo record lasciando i precedenti 25 vuoti

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
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