我是ASP.NET MVC和lambda表达式的新手,所以我试图找出最佳方法。
情况:客户有支持票。我有一个ViewModel,我只想显示打开的门票和已关闭的门票的数量。
有没有更好的方法来解决这个问题?我知道这似乎很普遍,但只是想要专家意见。
TicketStatus completeStatus = _db.TicketStatuses.Single(s => s.Status == "Complete");
DashboardSupportView supportView = new DashboardSupportView();
supportView.OpenTickets = _db.Tickets
.Where(t => t.ClientID == client.ClientID)
.Where(n => n.TicketStatus.TicketStatusID != completeStatus.TicketStatusID)
.Count();
supportView.ClosedTickets = _db.Tickets
.Where(t => t.ClientID == client.ClientID)
.Where(t => t.TicketStatus.TicketStatusID == completeStatus.TicketStatusID)
.Count();
return PartialView(supportView)
答案 0 :(得分:1)
是的,没关系。我建议你稍微改一下:
TicketStatus completeStatus = _db.TicketStatuses.Single(s => s.Status == "Complete");
DashboardSupportView supportView = new DashboardSupportView();
supportView.OpenTickets = _db.Tickets.Count(t => t.ClientID == client.ClientID && t.TicketStatus.TicketStatusID != completeStatus.TicketStatusID);
supportView.ClosedTickets = _db.Tickets.Count(t => t.ClientID == client.ClientID && t.TicketStatus.TicketStatusID == completeStatus.TicketStatusID);
return PartialView(supportView)
或者,您的客户端实体具有导航属性,您可以按照以下方式执行:
TicketStatus completeStatus = _db.TicketStatuses.Single(s => s.Status == "Complete");
Client entityClient = _db.Clients.Single(c => c.ClientID == client.ClientID);
DashboardSupportView supportView = new DashboardSupportView();
supportView.OpenTickets = entityClient.Tickets.Count(t.TicketStatus.TicketStatusID != completeStatus.TicketStatusID);
supportView.ClosedTickets = entityClient.Tickets.Count(t.TicketStatus.TicketStatusID == completeStatus.TicketStatusID);
return PartialView(supportView)