2009-03-19 6 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); 
       } 
      } 
     } 

그래서이 작업을 수행하는 방법은 무엇입니까? 나는 그것이 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))); 
관련 문제