|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
[C#][LINQ] Creare un Dictionary da un DataTable
Sera a tutti,
ho un datatable formato da N colonne, due delle quali sono 'tipo' e 'colore'. Avrei la necessità di popolare un Dictionary eseguendo un distinct sul dataTable per 'tipo' e tirando fuori i colori ad esso associati. Ho semplicemente scritto: Codice:
Dictionary<String, String> listOfTypeColours = new Dictionary<String, String>(); listOfTypeColours = fs.DataTable.AsEnumerable().Distinct() .ToDictionary( row => row.Field<String>('Tipo'), row => row.Field<String>('Colore') ); Potreste aiutarmi? Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Oppure potrei prima eseguire un distinct per ricavare i 'tipi' presenti....ma dopo come posso eseguire un iterator per ricavare il 'colore' corrispondente?
Codice:
List<string> arrType = fs.DataTable.AsEnumerable() .Select(row => row.Field<String>('Tipo')) .Distinct() .ToList(); |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Ragazzi, ho trovato questa soluzione funzionante:
Codice:
Dictionary<String, String> listOfTypeColours = new Dictionary<String, String>(); List<string> arrType = fs.DataTable.AsEnumerable().Select(row => row.Field<String>('TIPO')).Distinct().ToList(); foreach (string item in arrType) { string myKey = fs.DataTable.AsEnumerable().Where(row => row.Field<String>('TIPO').Equals(item)) .Select(row => row.Field<String>('COLORE')).First(); listOfTypeColours.Add(item, myKey); } Se comunque esiste un modo per eseguire un distinct sul DataTable e da esso ricavare un Dictionary, potreste indicarmelo? Grazie. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2006
Messaggi: 1539
|
A dire la verità mi sembra che la tua soluzione non sia corretta
se hai "Pippo", "ROSSO" "Pippo","Verde" A pippo verrebbe associato solo il primo perdendo il secondo Ti serve forse Dictionary<string,List<string>> typeToColors; Che puoi fare tipo Codice:
Dictionary<string,List<string>> dict = dt.AsEnumerable().GroupBy(r => r.Field<string>("tipo")).ToDictionary(r => r.Key, r => r.AsEnumerable().Select(ri => ri.Field<string>("colore")).ToList()); Ultima modifica di lishi : 31-07-2015 alle 21:17. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Ho dimenticato di dire che l'associazione è unica...ho in join due tabelle da una delle quali si ricava il colore per ogni tipo....
Ultima modifica di robertino_salemi : 07-08-2015 alle 15:44. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:30.