|
|||||||
|
|
|
![]() |
|
|
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 22: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 16:44. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:46.



















