gpt4 book ai didi

c# - 显示 GroupBy ASP.NET MVC 的第一个实例和最后一个实例

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:57 25 4
gpt4 key购买 nike

我有一个显示应用程序错误更新列表的仪表板。有些错误发生了不止一次,所以我按错误类型对它们进行了分组,并对它们进行计数以查看此错误发生了多少次。我想知道错误发生的第一个日期,这很简单,但也想知道它发生的最后日期,以查看此错误持续了多长时间。

下面我显示了我的当前输出和预期输出

当前输出

enter image description here

预期输出

enter image description here

下面我展示了我的代码。为了显示最后日期和第一个日期,我需要进行哪些更改?我试过使用 LastOrDefault() 但这实际上不起作用,因为当 LINQ 查询转换为 SQL 语句时,没有 BOTTOM 1 命令。

Controller

public ActionResult Errors(string sortOrder, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";


var queryString = RouteData.Values["id"];

var applications = db.ElmahErrors.Where(s => s.Application.Replace("/", "").Replace(".", "") == queryString)
.GroupBy(s => s.Type)
.Select(grp => new ErrorCountModel
{
ErrorCount = grp.Count(),
ElmahError = grp.FirstOrDefault()
});

switch (sortOrder)
{
default:
applications = applications.OrderBy(s => s.ElmahError.TimeUtc);

break;
}


int pageSize = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["DefaultPageSize"]);
int pageNumber = (page ?? 1);

return View(applications.ToPagedList(pageNumber, pageSize));
}

ErrorCount 模型

public class ErrorCountModel
{
public int ErrorCount { get; set; }
public ElmahError ElmahError { get; set; }
}

如有任何帮助,我们将不胜感激。

提前致谢。

最佳答案

旁注:以下不能保证给你最新的错误,因为你还没有告诉它排序

ElmahError = grp.FirstOrDefault()

应该是这样的:

ElmahError = grp.OrderBy(s => s.ElmahError.TimeUtc).FirstOrDefault();

我原以为 .LastOrDefault() 会起作用,但如果它真的不起作用,您可以这样做:

LastElmahError = grp.OrderByDescending(s => s.ElmahError.TimeUtc).FirstOrDefault();

本质上,您颠倒了第一个错误的顺序。

此外,将此添加到您的 ErrorCountModel 模型类:

public ElmahError LastElmahError { get; set; }

关于c# - 显示 GroupBy ASP.NET MVC 的第一个实例和最后一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com