Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
[C#] Raggruppare dati in List<>
martedì 13 gennaio 2009 - 12.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
liveforever81
Profilo
| Junior Member
104
messaggi | Data Invio:
mar 13 gen 2009 - 12:46
Salve a tutti.
Ho un oggetto che è possibile rappresentare come una sorta di DataTable.
Ho usato il metodo Sort() in modo da raggruppare logicamente i dati in esso contenuti, classificandoli mediante il nome di una colonna.
Vorrei ora creare una Lista che raggruppi tali oggetti (items).
Esempio:
ecco una schematizzazione del mio datatable (già ordinato secondo la colonna 4):
colonna1 colonna2 colonna3 colonna4
qualcosa qualcosa qualcosa paperoga
qualcosa qualcosa qualcosa paperoga
qualcosa qualcosa qualcosa paperoga
qualcosa qualcosa qualcosa pippo
qualcosa qualcosa qualcosa pippo
qualcosa qualcosa qualcosa pluto
Vorrei creare una lista del tipo List<colonna4> in cui la prima contiene le prime 3 righe, la seconda le altre 2 ed infine la terza l'ultima.
come poter fare?
Grazie
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mar 13 gen 2009 - 14:10
Ciao,
il tuo oggetto è una classe o una datatable?
Se è una classe ha 4 proprietà (Colonna1, Colonna2, Colonna3, Colonna4) ?
Che framework stai usando?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
liveforever81
Profilo
| Junior Member
104
messaggi | Data Invio:
mar 13 gen 2009 - 14:28
Ciao Marco!
Il mio oggetto è una classe di tipo Worklist: una sorta di DataTable composto da una serie di righe (detti items) e colonne;
Ciò che sto facendo è questo:
Ho ordinato tale mia worklist in modo da avere items simili raggruppati (raggruppati secondo la colonna4, chiamiamola "ProcessName", i cui valori spesso si ripetono nei vari items).
Ora devo creare un controllo web che mi visualizzi tale worklist in questo modo:
A video mostro solo il primo item con quel process name (e di seguito tutti gli altri);
Creo un javascript che, mediante la pressione di un bottone, apra la lista di tutti gli items aventi il ProcessName uguale a quello del primo (l'header).
La List<> mi serve proprio per raggruppare items simili e poi visualizzarli.
Ora però stavo cambiando idea: avevo pensato di usare un Dictionary in cui la chiave è la stringa ProcessName ed il valore proprio quello della worklist (costituita da tutti gli item aventi quel processName) o una Lista di Worklist items.
Che ne pensi?
***UPDATE: ho questo problema:
A questo metodo che crea tale dictionary passo solo il processName.
Come poter terminare l'aggiunta di worklist item al dictionary non appena il processName dell'item considerato risulta differente da quello in input?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mar 13 gen 2009 - 14:55
Se usi il framework 3.5 per fare le group by puoi usare linq. Qui trovi alcuni esempi:
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
Se invece usi il framework 2 allora ti consiglio di fare una classe che raggruppa gli item e ha come figli gli oggetti con il dettaglio.
Esempio:
- ClasseFiglio
-Property: Colonna1
-Property: Colonna2
-Property: Colonna3
-Property: Colonna4
- ClasseGroupBy:
- Property: Nome Da Visualizzare
- Property: List<ClasseFiglio>
Creando poi una list<ClasseGroupBy> o una Dictionary (a seconda di quello che ti risulta più comodo) potrai accedere automaticamente anche ai suoi figli.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Torna su
Stanze Forum
Elenco Threads
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 !