2013-01-04 11 views
5

miei dati assomiglia a questo:convertire set di dati per elencare <double> e la lista <string> C#

+=======+========+ 
| year |sales | 
+=======+========+ 
| 2008 |100000 | 
| 2009 |120040 | 
| 2010 |239000 | 
| 2011 |300900 | 
| 2012 |200900 | 
+=======+========+ 

posso convertire un set di dati alla lista dei doppio e stringa? la prima colonna del set di dati sarà list<string> e la seconda colonna è list<double>

c'è qualche soluzione? grazie

+5

Hai provato qualcosa? Se esegui il loop su DataSet, ci sei quasi. – RvdK

+0

Che cos'è il set di dati? – Tigran

+0

Mantenere due liste collegate per indice non è in genere un buon progetto. E ogni volta che vedi un valore monetario (un nome come "vendite" indica denaro) dovresti usare il tipo Decimale invece del doppio. –

risposta

12

Mi chiedo perché un anno è una stringa, però ...

List<string> years = dataSet.Tables[0].AsEnumerable() 
          .Select(r => r.Field<string>(0)) 
          .ToList(); 
List<double> doubles = dataSet.Tables[0].AsEnumerable() 
          .Select(r => r.Field<double>(1)) 
          .ToList(); 

Si noti che è necessario aggiungere using System.Linq;.

È possibile utilizzare il metodo Field extension con ordinale della colonna nella DataRow o tramite il suo nome: r.Field<string>("year")

+0

È meglio specificare 'r.Field (" anno ")' e lo stesso per le vendite. –

+0

@VishalSuthar: Modificato la mia risposta per tenerne conto. Usato l'ordinale da quando OP li ha menzionati per primi. –

+0

Ok..Non ho notato che .. +1 per quello .. @ TimSchmelter –

1

Prova come questo;

List<string> years = dataSet.Tables[0].AsEnumerable() 
          .Select(n => n.Field<string>(0)) 
          .ToList(); 

E (1) per sales colonna.

Non ricordare di aggiungere lo spazio dei nomi System.Data.DataSetExtensions. Vedi anche dal metodo MSDN DataTableExtensions.AsEnumerable().

Restituisce un oggetto IEnumerable, in cui il parametro generico T è DataRow. Questo oggetto può essere utilizzato in un'espressione LINQ o in una query del metodo.

0

1)

var myyear = ds.Tables[0].AsEnumerable() 
         .Select(r => new { 
           column1 = r.Field<string>("year") 
           }); 

List<string> year = myyear.ToList(); 

2)

var mysales = ds.Tables[0].AsEnumerable() 
          .Select(r => new { 
            column2 = r.Field<double>("sales") 
           }); 

List<double> sales = mysales.ToList(); 
Problemi correlati