2013-01-14 2 views
0

보고서를 표시하는 세부 정보 페이지가 있는데 이제는 둘 이상의 보고서를 표시하는 인덱스 페이지가 필요합니다. 나는 이것을 성공으로 설정했다. (사용자 페이지에서 체크 박스를 선택하고 '인쇄 페이지'에 정보를 표시 할 수 있지만 관련 정보를 표시하는 방법을 알 수 없다.)컨트롤러에 관련 데이터 포함

내 세부 정보 이 같은 사용자 ID에 -.

public ViewResult Details(string id) 
     { 
User user = db.Users 
       .Include(i => i.UserDetails) 
       .Include(i => i.TRS) 
       .Include(i => i.Pension) 
       .Include(i => i.LifeAssurance) 
       .Include(i => i.IncomeProtection) 
       .Where(i => i.UserName == id) 
       .Single(); 

string pensionProviderName = providerRepository.GetProviderByID(user.Pension.PensionProviderID).ProviderName; 

TRSViewModel viewModel = new TRSViewModel 
      { 
       UserName = user.UserName, 
       FirstName = user.UserDetails.FirstName, 
       LastName = user.UserDetails.LastName, 
       Salary = user.UserDetails.Salary, 
       PensionSchemeName = pensionSchemeName 

하지만

내가 직접 매핑을 시도 내 인덱스에 내가

public ViewResult Index(FormCollection form) 
     { 
      string[] UserIDs = form["TRSIDs"].Split(','); 

var trs = db.Users 
       .Include(t => t.UserDetails) 
       .Include(t => t.TRS) 
       .Include(t => t.Pension) 
       .Where(g => UserIDs.Contains(g.UserName)) 
       .Select(user => new TRSViewModel 
      { 
       UserName = user.UserName, 
       FirstName = user.UserDetails.FirstName, 
       LastName = user.UserDetails.LastName, 
       Salary = user.UserDetails.Salary 

을했지만 내가 TEH 뷰 모델의 'PensionSchemeName'세부 사항을 포함하는 방법을 알아낼 수 없습니다 사용 -

PensionSchemeName = db.SchemeNames.Find(user.Pension.PensionSchemeNameID).Name, 

하지만 오류가 발생합니다. 내가 어떻게 이것을 포함시킬 수있는 아이디어가 있습니까?

답변

1

수동으로 사용자 및 SchemeNames 가입을 시도 할 수 있습니다 :

public ViewResult Index(FormCollection form) 
{ 
    string[] UserIDs = form["TRSIDs"].Split(','); 

    var trs = db.Users 
     .Join(db.SchemeNames, 
      user => user.Pension.PensionSchemeNameID, 
      schemeName => schemeName.SchemeNameID, 
      (user, schemeName) => new { User = user, SchemeName = schemeName }) 
     .Where(a => UserIDs.Contains(a.User.UserName)) 
     .Select(a => new TRSViewModel 
     { 
      UserName = a.User.UserName, 
      FirstName = a.User.UserDetails.FirstName, 
      LastName = a.User.UserDetails.LastName, 
      Salary = a.User.UserDetails.Salary, 
      PensionSchemeName = a.SchemeName.Name 
     } 
    //... 
} 

내가 PensionPensionSchemeName 탐색 속성이없는 가정, 그렇지 않으면 더 솔직 할 것 :

var trs = db.Users 
     .Where(u => UserIDs.Contains(u.UserName)) 
     .Select(u => new TRSViewModel 
     { 
      UserName = u.UserName, 
      FirstName = u.UserDetails.FirstName, 
      LastName = u.UserDetails.LastName, 
      Salary = u.UserDetails.Salary, 
      PensionSchemeName = u.Pension.PensionSchemeName.Name 
     } 

(Include을 삭제했습니다. 투영법을 사용할 때 무시됩니다 (Select).

+0

감사합니다. –

관련 문제