2013-01-04 37 views
5

dữ liệu của tôi trông như thế này:chuyển đổi dữ liệu vào danh sách <double> và danh sách <string> C#

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

tôi có thể chuyển đổi một tập dữ liệu vào danh sách của đôi và chuỗi? cột đầu tiên của tập dữ liệu sẽ là list<string> và cột thứ hai là list<double>

có giải pháp nào không? nhờ

+5

Các bạn đã thử bất cứ điều gì? Nếu bạn lặp lại DataSet gần như ở đó. – RvdK

+0

Tập dữ liệu là gì? – Tigran

+0

Việc giữ hai danh sách được kết nối theo chỉ mục thường không phải là thiết kế tốt. Và bất kỳ lúc nào bạn nhìn thấy một giá trị tiền tệ (một tên như "bán hàng" chỉ ra tiền), bạn nên sử dụng loại thập phân thay vì tăng gấp đôi. –

Trả lời

12

Tôi tự hỏi tại sao một năm là một chuỗi, tuy nhiên ...

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

Lưu ý rằng bạn cần phải thêm using System.Linq;.

Bạn có thể sử dụng phương pháp Field extension với thứ tự của cột trong DataRow hoặc thông qua tên của nó: r.Field<string>("year")

+0

Tốt hơn nên chỉ định 'r.Field (" năm ")' và tương tự cho bán hàng. –

+0

@VishalSuthar: Đã chỉnh sửa câu trả lời của tôi để tính đến điều đó. Được sử dụng thứ tự kể từ khi OP đề cập đến họ trước. –

+0

Ok..Tôi không nhận thấy rằng .. +1 cho điều đó .. @ TimSchmelter –

1

Hãy thử như thế này;

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

(1) cho cột sales.

Đừng nhớ thêm System.Data.DataSetExtensions không gian tên. Cũng xem xét từ phương pháp MSDN DataTableExtensions.AsEnumerable().

Trả về đối tượng IEnumerable, trong đó thông số chung T là DataRow. Đối tượng này có thể được sử dụng trong một truy vấn LINQ hoặc phương thức.

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(); 
Các vấn đề liên quan