6

我的数据如下所示:

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

我可以将数据集转换为双精度和字符串列表吗?数据集的第一列list<string>是,第二列是list<double>

有什么解决办法吗?谢谢

4

3 回答 3

16

我想知道为什么一年是一个字符串,但是......

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

请注意,您需要添加using System.Linq;.

您可以将Field扩展方法与列的序号一起使用DataRow或通过它的名称:r.Field<string>("year")

于 2013-01-04T08:24:48.297 回答
2

试试这样;

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

(1)sales列。

不要记得添加System.Data.DataSetExtensions命名空间。另请参阅 MSDN DataTableExtensions.AsEnumerable()方法。

返回一个 IEnumerable 对象,其中泛型参数 T 是 DataRow。此对象可用于 LINQ 表达式或方法查询。

于 2013-01-04T08:25:50.513 回答
1

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();
于 2013-01-04T08:36:05.610 回答