2016-07-25 2 views
0

모든 레코드와 그룹을 ProgramId으로 가져 와서보고 싶습니다. Asp.Net Foreach and groupby

var userProgramsStats = (from a in db.Statistics where a.UserId == login.GetUserObject().UserId select a) 
       .GroupBy(a => a.ProgramId); 

ViewBag.userProgramsStats = userProgramsStats 

그리고 템플릿

: 내가 어디 아이디 모든 레코드를 얻고, 다음 GROUPBY programid 한 열 MoneyRate을 요약해야한다

An unhandled exception has occurred: 'object' does not contain a definition for 'MoneyRate'

:

@foreach (var item in ViewBag.UserProgramsStats) 
{ 
    @item.MoneyRate 
} 

불행하게도이 오류를 참조하십시오.

@item.MoneyRate<br /> // sum MoneyRate 
@item.OthercolumnNormal 

답변

0

귀하의 오류 인해 데이터 item의 객체의 잘못된 유형 : : 다음과 같이 사용합니다 을 foreach 문을 처리하는 동안 데이터의 유형은 인식되지 않습니다.

당신은 데이터 모델 지정해야합니다 :

이 템플릿에서 다음
public class UserStat { 

    public double MoneyRate { get; set; } 
    public string ColumnNormal {get; set;} 

    public UserStat() { } 
    public UserStat(double moneyRate, string columnNormal) 
    { 
     MoneyRate = moneyRate; 
     ColumnNormal = columnNormal; 
    } 
} 

, 당신은해야 다음을 사용하여

@foreach (dynamic item in ViewBag.UserProgramsStats) 
{ 
    @item.MoneyRate 
} 

:

@foreach (UserStat item in ViewBag.UserProgramsStats) 
{ 
    @item.MoneyRate 
} 

또한 같은 것을 할 수 있습니다를 dynamic 키워드는 런타임에 속성이 존재하는지 평가합니다.

+0

덕분에 내가 할 때,하지만 "동적"나는 어떤 오류가 표시 해달라고하지만 내 쿼리 .. 너무 기록 : var에 userProgramsStats = (에서 db.Statistics의 경우 a.UserId == login.GetUserObject() .UserId select a) .GroupBy (a => a.ProgramId) .ToList(); – ZiomekZKadwencji

+0

죄송합니다. 내 잘못 - 같은 오류. – ZiomekZKadwencji

0

userProgramsStats 유형에 MoneyRate 등록 정보가 없으므로 유형 오류가 발생합니다.

MoneyRate 열을 합산하여 그룹화 된 결과를 새로운 유형으로 투영해야한다고 가정 해보십시오.

기존 쿼리 사용 새로운 익명 형식 인 programId와 각 programId에 대한 MoneyRate 열의 합계로 투영되는 select 문을 끝에 추가했습니다. 투사와 익명 형식에 대한 자세한 내용은

var result = (from a in db.Statistics where a.UserId login.GetUserObject().UserId select a) 
       .GroupBy(a => a.programid) 
       .Select(group => new { MoneyRateSum = group.Sum(i => i.MoneyRate), ProgramId = group.Key }); 

https://msdn.microsoft.com/en-us/library/bb397914.aspx를 참조하십시오.

+0

같은 오류 .. 처리되지 않은 예외가 발생했습니다 : '개체'에 'MoneyRateSum'에 대한 정의가 없습니다. – ZiomekZKadwencji

+0

위에서 제안한 뷰 템플릿의 동적 유형과 함께 투영을 포함하는 경우는 어떨까요? '@foreach (ViewBag.UserProgramsStats의 동적 항목) { @ item.MoneyRateSum } –