Convertire DataTable in List

venerdì 28 marzo 2008 - 16.20

kidrock Profilo | Junior Member

Salve come da titolo volevo convertire un DataTable in list<T> e ho creato questo pezzo di codice :

List<News> news = new List<News>();
foreach (DataRow row in this.Select().Rows)
{

}

non si può castare la riga Row con la classe NEWS?

Grazie mille
Ciao
Michele

"La sconfitta è un' eleganza.Per l'ipocrisia di chi si arrende in partenza."

freeteo Profilo | Guru

ciao,
putroppo quello che tu vuoi fare non è possibile nel senso che sono 2 classi diverse, e non c'e' un convertitore tra 2 classi diverse (tral'altro una del Framework e uan tua), questo perche' le "associazioni" in base a che ragionamento dovrebbero essere fatte?

Devi piuttosto farti tu le varie mappature tra i campi della tua classe e la riga che hai caricato dal db, quindi:

List<News> news = new List<News>(); foreach (DataRow row in this.Select().Rows) { News n = new News(); n.ID = Convert.ToInt32(row["id"]); n.Data = Convert.ToDateTime(row["data"]); ... news.Add(n); }


e non c'e' alternativa, o almeno se non usare Linq (che cmq ti fa le mappature anche lui, senza che tu le scriva ma cmq le fa anche lui per forza).

* Tieni presente che "DbNull" o "null" che ti puo' arrivare dal valore diretto della cella della DataTable puo' andare in errore con la conversione che ti ho scritto, dovresti pensare ad una mappatura che tenga presente anche questi casi...

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5