关于lambda表达式的专家意见 - ViewModels

时间:2012-12-08 03:39:54

标签: c# lambda asp.net-mvc-4 asp.net-mvc-viewmodel

我是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)

1 个答案:

答案 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)