2010-07-21 3 views
0

두 테이블에서 동적으로 생성되는 일부 데이터를 가장 잘 표현하는 방법을 고집합니다.ASP.Net MVC에서 볼 피벗 쿼리 바인딩

var assets = assetRepo.Find(x => x.LoginId == User.Identity.Name); 
    var accounts = repository.Find(x => x.AccStatus == "A" && x.LoginId == User.Identity.Name); 

    var query = from asst in assets 
       join acct in accounts on asst.AccountId equals acct.AccountId 
       select new 
       { 
        Account = acct.AccountNumber, 
        Status = acct.AccStatus, 
        Make = asst.Make, 
        Model = asst.Model, 
        Submodel = asst.SubModel, 
        Registration = asst.Registration, 
        Balance = acct.BalanceOutstanding, 
        NextPayment = acct.NextPayment, 
        Date = String.Format("{0:dd MMM yyyy}", acct.NextPaymentDate), 
        Due = acct.ArrearsBal 
       }; 

은 무엇보기에이 결합하는 가장 좋은 (즉, 깨끗한) 방법이 될 것이다 :

내 쿼리를 감안할 때? 사용자 정의 클래스가 필요하거나 익명 유형의 컬렉션을 지정하고 반복하는 방법이 있습니까?

답변

1

맞춤 클래스를 생성하면 추가적인 이점이 있습니다. DisplayAttribute를 사용하여 열 머리글 및 순서를 설정할 수 있습니다. 그런 다음 모든 유형의 객체 목록을 사용하고 반사를 사용하여 주석을 읽고 멋지게보기를 표시하는보기 (또는 DisplayFor와 함께 사용할 템플릿)를 만들 수 있습니다.

class Report { 
    [Display(Name="Account",Order=1)] 
    public string Account {get; set;} 

    [Display(Name="Next payment",Order=2)] 
    public Date NextPayment {get; set;} 
} 

보기에도 깨끗합니다. 그리드뿐 아니라 엑셀 내보내기 또는 기타 데이터 작업에서도이 주석을 사용할 수 있습니다.