C#報錯:輸入字串格式不正確
List<Model> data1 = list.Select(x => new Model { num = Convert.ToDecimal(x.PM25) }).OrderBy(x => x.num).ToList();
修改如下:
data = list.OrderBy(x => x.CO).Select(x => x.CO).ToList();
List<decimal> list3 = new List<decimal>();
decimal s3 = 0;
list3 = data.ConvertAll<decimal>(x => decimal.TryParse(x, out s3) == true ? s3 : s3);
附TryParse的使用方法如下:
https://blog.csdn.net/firetaker/article/details/5638914
Convert.ToDouble double.TryParse 使用方式比較
2010年06月01日 11:20:00 firetaker 閱讀數:5258 標籤: exceptionstring測試
[c-sharp] view plain copy
- static void Main(string[] args)
- {
- try
- {
- string str = "";
- // 如果當前str為空串,則出異常:輸入字串格式不正確
- Console.WriteLine(Convert.ToDouble(str));
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
以上程式碼中出現的結果為:輸入字串格式不正確。因為傳入的字串為空,轉換成double型別不成功
[c-sharp] view plain copy
- static void Main(string[] args)
- {
- try
- {
- string str = "123.123";
- // 如果當前str為空串,則出異常:輸入字串格式不正確
- Console.WriteLine(Convert.ToDouble(str));
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
隨便對str賦值一個合適的值,得到結果為:123.123
下面轉換用另外一種方式處理:
第一種情況設定當前的str為空
[c-sharp] view plain copy
- static void Main(string[] args)
- {
- try
- {
- string str = "";
- double rst = 0.0;
- Console.WriteLine("轉換結果為:" + double.TryParse(str, out rst));
- Console.WriteLine(rst);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
得到的結果為:
轉換結果為:false
0
第二種情況:
[c-sharp] view plain copy
- static void Main(string[] args)
- {
- try
- {
- string str = "123.123";
- double rst = 0.0;
- Console.WriteLine("轉換結果為:" + double.TryParse(str, out rst));
- Console.WriteLine(rst);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
得到的結果為:
轉換結果為:true
123.123
由以上的測試結果可以看出。使用double.TryParse()做型別轉換更安全
可以對返回值進行判斷,也可以設定預設的返回值0