2010-11-30 4 views
5

일부 웹보기에서 linq 조인 쿼리를 표시하려고합니다. 나는에 조금 혼란 스러워요 무엇MVC보기에 Linq 조인 쿼리가 표시됩니다.

public ActionResult InactiveUsers() 
     { 
      using (ModelContainer ctn = new ModelContainer()) 
      { 
       DateTime duration = DateTime.Now.AddDays(-3); 

       var inactive = from usrs in ctn.aspnet_Users 
           where usrs.LastActivityDate <= duration 
           join o in ctn.Groups on 
           usrs.UserId equals o.UserID 
           select new 
           { 
            usrs.UserName, 
            usrs.LastActivityDate, 
            o.PrimaryPhoneNumber, 
           }; 

       return View(inactive.ToList()); 
      } 

     } 

이 다음에 무엇이다

여기 내 컨트롤러 내에서 내 쿼리입니다. 모델을 사용하여 강력한 형식의 뷰를 추가하는 것에 익숙하지만, 조인 쿼리가있는 경우 어떻게됩니까?

누구든지 올바른 방향으로 나를 가리킬 수 있다면 매우 감사 할 것입니다.

감사합니다. 를 사용하는 생성자가있는 InactiveUser 클래스로

  var inactive = from usrs in ctn.aspnet_Users 
          where usrs.LastActivityDate <= duration 
          join o in ctn.Groups on 
          usrs.UserId equals o.UserID 
          select new InactiveUser(usrs.UserName, usrs.LastActivityDate, o.PrimaryPhoneNumber); 

:

답변

3

대신 익명 형식의는 IEnumerable을 반환하는 결과에 가입 한 후 정상적으로 그것을 위해 모델을 생성하기위한, 당신은 클래스를 만들 수 있습니다 UserName, Date 및 PhoneNumber.

+0

답장을 보내 주셔서 감사합니다. 당신이 말한 것을했는데 이제는 완벽하게 작동합니다. 고맙습니다 :) – 109221793

4

한 가지 해결책은 "ViewModel"패턴을 사용하는 것입니다. 익명 형식을 만드는 대신 표시 할 데이터가 포함 된 뷰 모델을 만듭니다. 단순히 그것을 채우고 그것을 당신의 견해에 전달하십시오. 이 패턴을 사용하는 경우

우리는 는 우리의 특정보기를 시나리오를 최적화, 그리고 동적 값/콘텐츠에 대한 노출 특성 우리의 뷰 템플릿에 의해 필요 강력한 형식의 클래스를 만들 수 있습니다. 그런 다음 컨트롤러 클래스를 채우고 이러한보기에 최적화 된 클래스를 보기 템플릿에 전달하여 사용할 수 있습니다. 이렇게하면 유형 안전성, 컴파일 타임 검사, 및 편집기 intellisense보기 템플릿을 사용할 수 있습니다.

관련 문제