2013-01-04 8 views
5

meine Daten zur Liste sieht wie folgt aus:convert-Datensatz <double> und Liste <string> C#

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

kann ich einen Datensatz zur Liste der Doppel-und String-Format konvertieren? Die erste Spalte des Datensatzes ist list<string> und die zweite Spalte ist list<double>

Gibt es eine Lösung? Dank

+5

Haben Sie versucht, irgendetwas? Wenn du DataSet überschleifst, bist du fast da. – RvdK

+0

Was ist ein Datensatz? – Tigran

+0

Es ist normalerweise kein gutes Design, wenn zwei Listen per Index verbunden sind. Und jedes Mal, wenn Sie einen Geldwert sehen (ein Name wie "Umsatz" gibt Geld an), sollten Sie den Dezimaltyp anstelle des Doppelten verwenden. –

Antwort

12

ich, warum ein Jahr fragen sich jedoch ein String ist ...

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(); 

Beachten Sie, dass Sie using System.Linq; hinzufügen müssen.

können Sie die Field extension Methode mit der Ordnungs der Spalte verwenden im DataRow oder über seinen Namen: r.Field<string>("year")

+0

Es ist besser, 'r.Field (" year ")' und dasselbe für den Verkauf anzugeben. –

+0

@VishalSuthar: Bearbeitete meine Antwort, um das zu berücksichtigen. Benutzte die Ordinalzahl, da OP sie zuerst erwähnte. –

+0

Ok..ich habe das nicht bemerkt .. +1 dafür .. @ TimSchmelter –

1

wie diese versuchen;

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

Und (1) für sales Spalte.

Erinnern Sie sich nicht daran, System.Data.DataSetExtensions Namespace hinzuzufügen. Sehen Sie sich auch die Methode MSDN DataTableExtensions.AsEnumerable() an.

Gibt ein IEnumerable-Objekt zurück, wobei der generische Parameter T DataRow ist. Dieses Objekt kann in einer LINQ-Ausdrucks- oder Methodenabfrage verwendet werden.

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();