将字符串从列表转换为双列表的最短方法
本文关键字:列表 方法 字符串 转换 | 更新日期: 2023-09-27 17:53:36
我想将字符串值从列表转换为双精度。所以我使用下面的代码
List<double> valList = new List<double>();
valList = aList.Select(x => double.TryParse(x.aDoubleValue_inString, out x)? x: 0).ToList();
由于某些原因,它不工作,显示我使用double.TryParse错误!
任何想法?
您要查找的内容如下:
valList = aList.Select(x=>
{
double temp;
return double.TryParse(x.aDoubleValue_inString, out temp)? temp: 0;
}).ToList();
您可以使用类似的查询表达式:
double temp = 0;
valList = (from x in aList
where double.TryParse(x.aDoubleValue_inString, out temp)
select temp).ToList();
如果你的属性x.aDoubleValue_inString
是一个双值,你不需要double.TryParse
,那么你可以这样做:
valList = aList.Select(x=> double.Parse(x.aDoubleValue_inString))
.ToList();
看起来你想做双倍。将输出解析回字符串列表变量。试一试:
List<double> valList = new List<double>();
double y;
valList = aList.Select(x => double.TryParse(x.aDoubleValue_inString, out y)? y: 0).ToList();
你的out
没有多大意义。如此:
var aList = new List<string> { "1.2", "2" };
List<double> valList = new List<double>();
double temp;
valList = aList.Select(x => double.TryParse(x, out temp) ? temp : 0).ToList();
如果不在Linq本身之外为out
参数声明一个变量,那么在Linq中使用out
参数的方法就不那么容易了。
然而,我注意到您似乎想要用零替换失败的解析,在这种情况下,您可以编写一个小的辅助方法,如下所示:
static double ParseOrZero(string input)
{
double result;
double.TryParse(input, out result);
return result;
}
然后你可以这样做:
var valList = aList.Select(ParseOrZero).ToList();
用一个很好的扩展方法包装它
public static class StrExt
{
public static double ToDouble(this string str)
{
double val;
return Double.TryParse(str, out val) ? val : default(Double);
}
}
...
valList = aList.Select(x => x.aDoubleValue_inString.ToDouble());