2010-07-29 39 views
5

EDIT : I had tried these two ways before -Làm thế nào để chuyển đổi danh sách các chuỗi để tăng gấp đôi?

List<double> doubleList = 
stringList.ConvertAll(x => (double)x); 

List<double> doubleList = 
stringList.Select(x => 
(double)x).ToList(); 

và đã nhận lỗi này:

Cannot convert type 'string' to'double'

Tôi đọc về một cái gì đó similiar chuyển đổi ints để đôi ... nhưng tôi có Danh sách chuỗi mà tôi cần phải chuyển đổi vào danh sách của đôi và ConvertAll() không hoạt động cả phương thức mở rộng Chọn. Bất cứ ai có thể vui lòng giúp tôi ra ngoài.

+1

"ConvertAll() không hoạt động cả phương pháp mở rộng Chọn" - có gì sai? Lỗi trình biên dịch? Ngoại lệ? Thứ gì khác? Bạn có thể cung cấp mã không? –

+0

người đã bỏ phiếu cho câu hỏi này? – Nix

+0

Tôi đã nhận được lỗi- Không thể chuyển đổi loại 'chuỗi' thành 'double' nhưng câu trả lời của Mark hoạt động !! – Vishal

Trả lời

13

Phương pháp chọn phải có tác dụng nếu bạn đang sử dụng .NET 3.5 hoặc mới hơn:

List<double> result = l.Select(x => double.Parse(x)).ToList(); 

Dưới đây là một số mã ví dụ:

List<string> l = new List<string> { (0.1).ToString(), (1.5).ToString() }; 
List<double> result = l.Select(x => double.Parse(x)).ToList(); 
foreach (double x in result) 
{ 
    Console.WriteLine(x); 
} 

Kết quả:

 
0,1 
1,5 

Một điều cần lưu ý là bạn đang sử dụng văn hóa nào để phân tích chuỗi. Bạn có thể muốn sử dụng quá tải Parse mất văn hóa và sử dụng CultureInfo.InvariantCulture chẳng hạn.

+0

Điều đó hoạt động nhờ !! – Vishal

0

Làm thế nào về điều này?

List<string> list = [your strings] 
List<double> newList = new List<double>(); 
for(int i = 0; i < list.Count; i++) 
{ 
    double d = 0; 
    if(!double.TryParse(list[i], d)) //Error 
    newList.Add(d); 
} 
1

Bạn có thể sử dụng phương pháp ForEach của Danh mục

List<double> dbl= new List<double>; 
stringList.ForEach(str=> dbl.Add(double.parse(str))); 
3

Bạn có thể sử dụng LINQ:

List<double> myList = myStringlist.ConvertAll(item => double.Parse(item)); 

Xin lưu ý rằng phân tích đôi và float là phức tạp - chỉ cần nghĩ về điều này :

100,00 100.00

.

-> Cài đặt locale khác nhau

0

Hy vọng điều này có thể làm việc: Danh sách tmpDouble = tmpString.Select (? X => (double) Convert.ToDouble (x)) ToList();

Các vấn đề liên quan