Da DataTable a Json

giovedì 03 giugno 2010 - 17.00

volperubbia Profilo | Senior Member

Ciao a tutti,
avrei bisogno di trovare un modo per convertire una datatable in un oggetto
Json per poterlo poi restituire come ActionResult ... con un
Return Json(New With {.totalRecords = tbl.Rows.Count, .records = obj})

in pratica devo capire cosa passare su obj.

Al momento, con una tabella di cui conosco i campi, riesco ad ottenere il risultato
in questo modo:

Dim obj As Object = Nothing
Dim tbl AS DataTable = ...

Dim List(tbl.Rows.Count - 1) As Object
For RowIndex As Int32 = 0 To (tbl.Rows.Count - 1)
List(RowIndex) = New With {.ID = tbl.Rows(RowIndex)(0), .Description = tbl.Rows(RowIndex)(1)}
Next RowIndex

obj = List
Return Json(New With {.totalRecords = tbl.Rows.Count, .records = obj})

Questo funziona.
Come posso ottenere lo stesso risultato quando non conosco i nomi delle colonne?
Potrei fare un ciclo su ogni colona, il problema è che non riesco ad ottenere lo stesso
risultato / formato della chiamata New With { ... }.

Grazie per l'attenzione,
Davide

ciccio_ska Profilo | Newbie

Ciao Davide,
io di recente ho fatto così :
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Dove query è il risultato della mia query linq, dovrebbe funzionare anche con il datatable...
Prova e informami
Francesco Scalise
blogs: http://netdev.flash-hacks.com
http://mobile.flash-hacks.com

volperubbia Profilo | Senior Member

Ciao Francesco,
alla fine ho optato per questa soluzione:

Dim tbl As DataTable = Nothing
' ... popolo tbl da database ...

Dim obj As Object = Nothing

obj = From Row As DataRow In tbl.Select.AsEnumerable _
Select New With {
.Field1 = Row("Field1"), _
.Field2 = Row("Field2"), _
...
...
}

Davide
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