我有一个列表,其中包含存储在List<string>
.
数据可能包含一些空值。
我怎样才能转换List<string>
为List<double?>
?这是我的代码:
List<double > d2 = d1.ConvertAll(item => double.Parse(item));
我有一个列表,其中包含存储在List<string>
.
数据可能包含一些空值。
我怎样才能转换List<string>
为List<double?>
?这是我的代码:
List<double > d2 = d1.ConvertAll(item => double.Parse(item));
您没有指定要如何处理不是null
但无法解析的输入。我给你三个解决方案。
第一个解决方案返回null
所有无法解析为的null
输入和s 。string
double
var values =
list.Select(
s => {
double value;
if(!Double.TryParse(s, out value)) {
return (double?)null;
}
return value;
}
).ToList();
请注意,这将返回null
输入和不解析为null
s的s。string
double
string
如果您有任何非空且无法解析的 s ,则第二种解决方案将爆炸:
var values = list.Select(s => s != null ? double.Parse(s) : (double?)null)
.ToList();
同样,请注意,如果您遇到任何不解析为的非 s,这将引发异常。null
string
double
第三种可能性是string
省略无法解析为double
.
var values =
list.Select(
s => {
double value;
if(s == null) {
return new { Parseable = true, Value = (double?)null) };
}
else if(!Double.TryParse(s, out value)) {
return new { Parseable = false, Value = (double?)null) };
}
else {
return new { Parseable = true, Value = value };
}
)
.Where(x => x.Parseable)
.Select(x => x.Value)
.ToList();
我实际上强烈建议不要这样做。默默地忽略错误是错误的巨大来源。
试试这个:
var result = yourlist.Select(x=> string.IsNullOrEmpty(x) ? (double?)null : Convert.ToDouble(x)).ToList();
List<double?> result = myList.Select(n => n == null ? (double?)null : double.Parse(n)).ToList();