c# - 如何解决 Get Endpoint ASP.Net API 中的滞后问题
问题描述
我的 API 中有一个端点,它返回特定司机在本周执行的订单数量以及他们获得的总收入。我写的代码工作得很好。但是,事实证明,由于订单数量众多,它的速度很慢。如何改进代码以减少耗时。
public async Task<IActionResult> GetWeeklyDriverReport(int id)
{
int mon = 0, tues = 0, wedn = 0, thurs = 0, fri = 0, sat = 0, sun = 0;
int _mon = 0, _tues = 0, _wedn = 0, _thurs = 0, _fri = 0, _sat = 0, _sun = 0;
DateTime givenDate = DateTime.Today;
DateTime startOfWeek = givenDate.AddDays(-1 * (Convert.ToInt32(givenDate.DayOfWeek) - 1));
DateTime endOfWeek = startOfWeek.AddDays(7);
var report = new List<DailyReport>();
var driver = await _userManager.FindByIdAsync(id.ToString());
if(driver == null)
return NotFound();
var orders = await _unitOfWork.Orders.GetAll(v => v.DriverId == driver.Id, q => q.OrderByDescending(s => s.FinishedDate));
orders = orders.Where(ob => startOfWeek <= ob.FinishedDate && ob.FinishedDate < endOfWeek).ToList();
if (orders.Count != 0)
{
foreach (var order in orders)
{
var day = Enum.GetName(typeof(DayOfWeek), Convert.ToInt32(order.FinishedDate.DayOfWeek));
if (day == "Monday")
{
mon += 1;
_mon += Convert.ToInt32(order.PaymentAmount);
}
//I repeat this process for each day of the week
}
var monday = new DailyReport { Day = "Monday", Deliveries = mon, Earnings = _mon };
var tuesday = new DailyReport { Day = "Tuesday", Deliveries = tues, Earnings = _tues };
var wednesday = new DailyReport { Day = "Wednesday", Deliveries = wedn, Earnings = _wedn
report.Add(monday);
report.Add(tuesday);
report.Add(wednesday);
//I repeat this process for each day of the week
return Ok(report);
}
else
{
return NoContent();
}
}
解决方案
推荐阅读
- javascript - 仅文本的引导轮播无法按预期工作
- mysql - 查询未读帖子计数
- android - 颤振位置包在构建项目中有错误
- c# - DataSet 可以加载到 XmlDocument 中吗?
- python - 从 pytorch 转换为 coreml 模型太大
- php - 我无法设置 php cookie
- android-studio - 如何使片段视图从顶部开始
- python - 将所有列表元素与字符串匹配,如果匹配则删除字符串部分
- python - 使用 pyglet 的 glVertexAttribPointer 数据类型的意外行为
- css - css-grid:图像在网格内占用大量空间