2016-03-24 6 views
0

例外(FormatException)を引き起こしているリストに対してソートを行っています。私は問題は、ユーザーの1人が実際の値に対してフィールド値にスペース文字か何かを持っていることだと思います。この例外を無視して他の値をソートするか、少なくともアプリケーションを中断させないようにするにはどうすればよいですか?List.Sortを実行しているときに例外を処理する方法

users.Sort((x, y) => DateTime.Parse(y.createdDate).CompareTo(DateTime.Parse(x.createdDate))); 

Error: An exception of type 'System.FormatException' occurred in mscorlib.dll but was not handled in user code

Additional information: String was not recognized as a valid DateTime.

答えて

5

あなたは、解析しようと、それが失敗した場合、ソート順をデフォルトにあります。これを行うにはもう少しコードが必要です:

users.Sort((x, y) => 
    { 
     DateTime xcd, ycd; 
     bool y_ok = DateTime.TryParse(y.createdDate, out ycd); 
     bool x_ok = DateTime.TryParse(x.createdDate, out xcd); 

     if (!x_ok && !y_ok) 
     { 
      return 0; 
     } 

     if (!x_ok) 
     { 
      return 1; 
     } 

     if (!y_ok) 
     { 
      return -1; 
     } 

     return ycd.CompareTo(xcd); 
    } 
関連する問題