C#报错:输入字符串格式不正确

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

  1. static void Main(string[] args)  
  2.       {  
  3.          try  
  4.          {  
  5.             string str = "";              
  6.             // 如果当前str为空串,则出异常:输入字符串格式不正确  
  7.             Console.WriteLine(Convert.ToDouble(str));              
  8.          }  
  9.          catch (Exception ex)  
  10.          {  
  11.             Console.WriteLine(ex.Message);  
  12.          }  
  13.          Console.ReadLine();  
  14.       }  

 

以上代码中出现的结果为:输入字符串格式不正确。因为传入的字符串为空,转换成double类型不成功

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.       {  
  3.          try  
  4.          {  
  5.             string str = "123.123";              
  6.             // 如果当前str为空串,则出异常:输入字符串格式不正确  
  7.             Console.WriteLine(Convert.ToDouble(str));              
  8.          }  
  9.          catch (Exception ex)  
  10.          {  
  11.             Console.WriteLine(ex.Message);  
  12.          }  
  13.          Console.ReadLine();  
  14.       }  

 

随便对str赋值一个合适的值,得到结果为:123.123

下面转换用另外一种方式处理:

第一种情况设置当前的str为空

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.     {  
  3.        try  
  4.        {  
  5.           string str = "";  
  6.           double rst = 0.0;  
  7.           Console.WriteLine("转换结果为:" + double.TryParse(str, out rst));  
  8.           Console.WriteLine(rst);              
  9.        }  
  10.        catch (Exception ex)  
  11.        {  
  12.           Console.WriteLine(ex.Message);  
  13.        }  
  14.        Console.ReadLine();  
  15.     }  

 

得到的结果为:

转换结果为:false

0

第二种情况:

 

[c-sharp] view plain copy

  1. static void Main(string[] args)  
  2.       {  
  3.          try  
  4.          {  
  5.             string str = "123.123";  
  6.             double rst = 0.0;  
  7.             Console.WriteLine("转换结果为:" + double.TryParse(str, out rst));  
  8.             Console.WriteLine(rst);              
  9.          }  
  10.          catch (Exception ex)  
  11.          {  
  12.             Console.WriteLine(ex.Message);  
  13.          }  
  14.          Console.ReadLine();  
  15.       }  

 

 

得到的结果为:

转换结果为:true

123.123

 

由以上的测试结果可以看出。使用double.TryParse()做类型转换更安全

可以对返回值进行判断,也可以设置默认的返回值0