编辑:我之前尝试过这两种方式 -
List<double> doubleList =
stringList.ConvertAll(x => (double)x);
List<double> doubleList =
stringList.Select(x =>
(double)x).ToList();
并收到此错误:
无法将类型'string'转换为'double'
我读到了将int转换为双精度的similiar内容...但是我有需要转换为双精度列表的字符串列表,而ConvertAll()不能同时使用Select扩展方法。任何人都可以帮助我。
答案 0 :(得分:17)
如果您使用的是.NET 3.5或更高版本,那么select方法应该可以工作:
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
。
答案 1 :(得分:4)
您可以使用linq:
List<double> myList = myStringlist.ConvertAll(item => double.Parse(item));
请注意,解析双精度和浮点数很复杂 - 只需要想一想:
100,00 100.00
- &GT;不同的区域设置
答案 2 :(得分:1)
您可以使用List
的ForEach方法List<double> dbl= new List<double>;
stringList.ForEach( str=> dbl.Add( double.parse( str ) ) );
答案 3 :(得分: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);
}
答案 4 :(得分:0)
希望这可行: 列表tmpDouble = tmpString.Select(x =&gt;(double?)Convert.ToDouble(x))。ToList();