EF查询值到ViewModel

时间:2016-12-27 12:18:21

标签: model-view-controller viewmodel

我有一个EF查询,其中还会根据其他表上的某些条件获取3列。输出列是ID,月和收入。我想在View上显示这些信息,但是如何?

我不知道在这里使用ViewModel。 查询是:

var serviceList1 = (from p in dbObj.ServiceWiseRevenues
                               group p by new { p.service_id, p.pdate.Month } into g
                               select new
                               {
                                   ID = g.Key.service_id,
                                   Month = g.Key.Month,
                                   Revenue = g.Sum(c => c.total_revenue / c.tbService.tbCountry.CountryCurrencyConversionRate)
                               }).OrderByDescending(x => x.Month).ToList();      
            return View(serviceList1);

1 个答案:

答案 0 :(得分:0)

serviceList1是匿名对象的列表。在View中使用它们是非常重要的,因为它们的类型是由.NET Runtime生成的。

最好定义一个像这样的ViewModel类(可能在文件夹/Models中):

public class RevByMonth
{
    int ID { get; set; },
    int Month { get; set; },
    double Revenue { get; set; },
}

然后将select new { ... }部分替换为:

select new RevByMonth
{
    ID = g.Key.service_id,
    Month = g.Key.Month,
    Revenue = g.Sum(...)
}

最后在视图模型中指定类型RevByMonth

@model List<RevByMonth>
// rest of View code, e.g. foreach (var revenue in Model) ...