我有一个显示模型的视图,但在模型中我还要显示来自控制器中以下linq的另一个模型的小数据表
var StudentRatings = db.LearnerRatings
.Where(i => i.LessonId == id)
.GroupBy(i => i.Rating)
.Select(group => new { Rating = group.Key, TotalCount = group.Count() });
ViewBag.Ratings = StudentRatings;
我已经从控制器返回了另一个模型,所以已将其添加到ViewBag中。 我以为我可以用foreach迭代这些
foreach (var ratings in ViewBag.Ratings){
@ratings.TotalCount
}
但是收到错误 - 附加信息:'object'不包含'TotalCount'的定义
我认为这必须被投射?如果是这样,它会被投放到什么地方?
这是上述的最佳方法吗?
答案 0 :(得分:1)
匿名类型不应该遍历方法边界:也就是说,您的View不知道ratings
是什么类型。
将您的匿名类型更改为命名的结构或类,然后您可以这样做:
class Rating {
public Int32 Rating { get; set; }
public Int32 TotalCount { get; set; }
}
...
.Select(group => new Rating { Rating = group.Key, TotalCount = group.Count() });
...
foreach(Rating rating in ViewBad.Ratings) {
@rating.TotalCount
}