MVC Linq使用GroupBy Min-Max并返回视图

本文关键字:返回 视图 Min-Max GroupBy Linq 使用 MVC | 更新日期: 2023-09-27 18:26:30

我有一个表,需要按日期分组tBooked我需要小组返回最小开始日期和最大结束日期我需要天数的总和。我写了以下内容:

        var model = _db.AnnualLeaves.Where(r => r.StafferId == stafferId)
                    .GroupBy(r => r.tBooked)
                    .Select(m => new
                    {
                        start = m.Min(r => r.StartDate),
                        end = m.Max(r => r.EndDate),
                        daycount = m.Sum(r => r.Days)
                    });

我似乎无法让模型重新出现在视图中。我试过各种各样的前臂,但没有一次我总是出错。

如果我使用以下内容创建视图:

@foreach (var item in ViewData.Model)
{
@item
}

视图渲染:

{ start = 15/10/2014 00:00:00, end = 21/10/2014 00:00:00, daycount = 5 }
{ start = 28/06/2015 00:00:00, end = 03/07/2015 00:00:00, daycount = 4.5 } 

购买我无法将@item.start放到页面上。

我已经尝试创建一个模型,并根据下面的模型将上面的var model更改为IEnumerable

public class ListLeaveModel 
{
public DateTime start { get; set; }
public DateTime end { get; set; }
public double daycount { get; set; }
}

我现在好像在兜圈子。我刚开始使用MVC和C#,所以它可能非常简单!我希望这是清楚的——我不知道什么是重要的。

MVC Linq使用GroupBy Min-Max并返回视图

您不应该返回任何鼠标类型的

var model = _db.AnnualLeaves.Where(r => r.StafferId == stafferId)
                    .GroupBy(r => r.tBooked)
                    .Select(m => new ListLeaveModel 
                    {
                        start = m.Min(r => r.StartDate),
                        end = m.Max(r => r.EndDate),
                        daycount = m.Sum(r => r.Days)
                    });
   return View(model.ToList());

供您查看:

@model IList<ListLeaveModel>
@foreach (var item in Model)
{
   @item.start
}