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