2

我对 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)
4

1 回答 1

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)
于 2012-12-08T03:45:33.080 回答