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

标签 c# asp.net asp.net-mvc linq

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

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

当前输出

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/

相关文章:

c# - ASP.NET 应用程序中数据的动态表示

javascript - 如何在更改事件中获取复选框的数据元素

css - 当输入有文本时,bootstrap 改变它的颜色

c# - 是否可以在 asp.net[c#] 项目中添加一些 VB 类?

c# - 如何从客户端应用程序启动服务器上的应用程序

c# - 使用 Intellisense 和编译时检查提取属性名称以进行反射

javascript - 如何从网页引用 TypeScript 文件

c# - asp.net gridview 不显示数据

c# - 使用 Visual Studio 11 (Windows 8) 在 XAML 中添加超链接按钮

c# - Asp.net MVC 下拉列表中的多个字段