Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-07-2015, 23:42   #1
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
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')
                                                );
ma non riesco ad eseguire la distinct per 'tipo'.

Potreste aiutarmi?

Grazie
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 08:54   #2
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
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();
Grazie.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 09:20   #3
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
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.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2015, 18:52   #4
lishi
Senior Member
 
L'Avatar di lishi
 
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.
lishi è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2015, 00:00   #5
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
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.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
L'IA sta prosciugando le riserve idriche...
Europa spaccata in due: Italia e Germani...
TOP 10 offerte Amazon del lunedì:...
State of Decay 3: trailer, data e la mos...
Iconico ed elegante: Samsung Galaxy S26 ...
Cybersecurity a misura di PMI: le soluzi...
Microsoft svela una speciale Xbox Series...
Perché l'IA agentica è la vera intellige...
Con il coupon torna a soli 34,19€ il car...
Resident Evil: Code Veronica torna in un...
AMD a un passo dal sorpasso? Il nuovo So...
Caricare l'auto elettrica o PHEV con la ...
UGREEN presenta i nuovi NASync GT con al...
Gli accessori auto da non perdere: aspir...
Questa bici elettrica è l'affare ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v