2009-03-19 21 views
2

ASP.Net MVCのViewData.Modelstateプロパティのプロパティを参照する文字列キーとともに例外を抽出するために、次のコードを記述しました。私はLinq式でこれを行うことが可能でなければならないと思うが、それはまったく私を狂わせた。Linqを使用してViewData.ModelStateから例外を取得するにはどうすればよいですか?

 var exceptions = new Dictionary<string, Exception>(); 
     foreach (KeyValuePair<string, ModelState> propertyErrorsPair in ViewData.ModelState) 
     { 
      foreach (var error in propertyErrorsPair.Value.Errors) 
      { 
       if (error.Exception != null) 
       { 
        exceptions.Add(propertyErrorsPair.Key, error.Exception); 
       } 
      } 
     } 

これはLinqの方法ですか?私はそれがSelectManyと関係があるかもしれないと思っていますが、私が言っているように、これを達成する方法はかなり分かりません。

おかげ

+0

は、あなたのコードは、単一のエラーに複数の例外があるとき、それはしようとするとき、それが失敗したというバグがあります次のものを辞書に追加します。 –

答えて

5

これは、同等のLINQの式である:ところで

var result = ViewData.ModelState.SelectMany(x => x.Value.Errors 
    .Where(error => error.Exception != null) 
    .Select(error => new KeyValuePair<string, Exception>(x.Key, error.Exception))); 
関連する問題