分组和排序ASP.NET

时间:2015-08-14 08:26:54

标签: c# asp.net

我有一个显示应用程序错误列表的页面。现在一切正常,它首先显示最新日期的错误。我希望能够根据它们来自哪个应用程序对错误进行分组,然后按日期对它们进行排序。这是我目前所拥有的,但我可以解决我需要添加的内容,以便按应用程序对它们进行分组。有人可以帮忙吗?

控制器

public ActionResult Index(string sortOrder, int? page)
{
    ViewBag.CurrentSort = sortOrder;
    ViewBag.DateSortParm = sortOrder == "TimeUtc" ? "timeutc_desc" : "TimeUtc";

    var applications = from s in db.ElmahErrors
                 select s;

    switch (sortOrder)
    {
        default:
            applications = applications.OrderByDescending(s => s.TimeUtc);
                break;
    }
    int pageSize = Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["DefaultPageSize"]);
    int pageNumber = (page ?? 1);
    return View(applications.ToPagedList(pageNumber, pageSize));
}

2 个答案:

答案 0 :(得分:1)

您只需使用GroupBy扩展程序: -

var applications = db.ElmahErrors.GroupBy(x => x.ApplicationName)
                                 .Select(x => new 
                                       {
                                          ApplicationName = x.Key,
                                          Errors = x.OrderByDescending(s => s.TimeUtc);
                                       });

在此,我认为应用程序名称存储在ApplicationName属性中。

答案 1 :(得分:1)

有几种方法可以做到这一点,但最简单的方法是按应用程序排序,然后按日期排序:

applications = applications.OrderBy(x=>x.Application).ThenByDescending(s => s.TimeUtc);