2

私はASP.NETMVCとラムダ式にかなり慣れていないので、これを行うための最良の方法を見つけようとしています。

状況:クライアントはサポートチケットを持っています。開いているチケットと閉じているチケットの数を表示したい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 に答える