【问题标题】:MVC Linq using GroupBy Min Max and returning viewMVC Linq 使用 GroupBy Min Max 并返回视图
【发布时间】:2014-11-21 15:53:25
【问题描述】:

我有一张桌子,需要按日期分组 我需要该组返回 Min StartDate 和 Max EndDate 我需要天数。 我写了以下内容:

        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,但没有任何错误。

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

@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#,所以它可能非常简单!我希望这很清楚 - 我不知道什么是重要的。

【问题讨论】:

  • 您是否尝试过返回数据本身,即不使用 ViewData / ViewBag... return this.View(model);如果这不能解决它;我怀疑你正在返回一个 IQueryable,所以在你的 linq 语句中尝试在最后放置一个 ToList()。
  • 试试@String.Format("{0:d}", item.start)
  • 谢谢大家。保罗,是的,我尝试了所有这些 - 当我将 .ToList() 添加到最后时,它导致了另一个问题。固定如下...

标签: c# asp.net-mvc linq


【解决方案1】:

你不应该返回任何鼠标类型

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
}

【讨论】:

  • 太棒了,谢谢!不确定它是否是给定的,但我得到了一个错误......但我只需要添加完整的命名空间@model IList 真的很感谢帮助......不确定我是否会到达那里.
猜你喜欢
  • 2012-05-16
  • 2019-04-10
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2018-07-31
  • 2017-08-24
相关资源
最近更新 更多