我想將列表中的字符串值轉換爲double。因此,我正在使用以下代碼將字符串從列表轉換爲雙列表的最短途徑
List<double> valList = new List<double>();
valList = aList.Select(x => double.TryParse(x.aDoubleValue_inString, out x)? x: 0).ToList();
由於某種原因,它不能正常工作,顯示我使用double.TryParse時出錯!
有什麼想法嗎?
我想將列表中的字符串值轉換爲double。因此,我正在使用以下代碼將字符串從列表轉換爲雙列表的最短途徑
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();
你可以做類似與query expression,如:
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();
@Downvoter,關心評論? – Habib
看起來像你正在嘗試使double.TryParse輸出回到你的字符串列表變量。嘗試:
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());
,什麼是你看到的錯誤? – Servy
x是您的對象,它有一些名爲aDoubleValue_inString的屬性。它也不能成爲TryParse的輸出參數。這沒有任何意義。 – jrwren