2010-07-29 52 views
5

EDIT : I had tried these two ways before -如何將字符串列表轉換爲雙精度?

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

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

,並得到這個錯誤:

Cannot convert type 'string' to'double'

我讀到有關整數轉換成雙打東西similiar ...但我有一個字符串列表,我需要轉換爲雙打和列表ConvertAll()不會使用Select擴展方法。任何人都可以請幫助我。

+1

「的ConvertAll()不工作既沒有選擇擴展方法」 - 有什麼錯?編譯器錯誤?例外?還有別的嗎?你能提供代碼嗎? – 2010-07-29 17:49:52

+0

誰投這個問題? – Nix 2010-07-29 17:51:27

+0

我得到錯誤 - 無法轉換類型「字符串」到「雙」,但馬克的回答的作品! – Vishal 2010-07-29 17:51:44

回答

13

的選擇方法應該,如果你使用的是.NET 3.5或工作新:

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

下面是一些示例代碼:

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

結果:

 
0,1 
1,5 

一要注意的是你正在使用哪種文化來解析字符串。例如,您可能想要使用Parse超負荷文化,並使用CultureInfo.InvariantCulture

+0

工程謝謝! – Vishal 2010-07-29 17:52:07

0

這個怎麼樣?

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

您可以使用清單給ForEach方法

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

您可以使用LINQ:

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

請注意,解析雙打和float是複雜的 - 只是覺得這:

100,00 100.00

- >不同的區域設置

0

希望這可能工作: 列表tmpDouble = tmpString.Select(X =>(雙)Convert.ToDouble(X))ToList();

相關問題