Задать вопрос
@anton_mra
Web-программист

Как ускорить запрос в контроллере?

Есть вот такой контроллер

[HttpGet("StockOnHand")]
        public IActionResult GetStockOnHand()
        {
            var storeList = context.Stores
           .Where(x => x.GeomarketName.StartsWith("RCA"))
           .Where(x => x.SubSubSegmentName.StartsWith("WS"))
           .Where(x => x.SegmentId == "WSV");

            var tempList = storeList.Select(x => x.StoreId);

            var StockList = context.StockOnHands
            .Where(x => x.PartType.Contains("Inventory"))
            .Where(x => tempList.Contains(x.StoreId))
            .ToList();

            var stockItems = StockList
              .Select(x =>
              {
                 Store store = storeList
                  .Where(s => s.StoreId == x.StoreId)
                  .FirstOrDefault();

                  return new StockOnHandList()
                  {
                      StockId = x.StockId,
                      Store = new StoreListDto(store),
                      StoreId = x.StoreId,
                      PartNumber = x.PartNumber,
                      PartDescription = x.PartDescription,
                      LastPurchasePrice = x.LastPurchasePrice,
                      StockOnHandQuantity = x.StockOnHandQuantity,
                      U = x.U,
                      LotNumber = x.LotNumber,
                      ExpirationDate = x.ExpirationDate,
                      ReportUpdateDate = x.ReportUpdateDate,
                  };
              })
              .ToList();

            return Json(stockItems);
        }


Вот это делает контроллер очень медленным.

Store store = storeList
.Where(s => s.StoreId == x.StoreId)
.FirstOrDefault();

Я имею такую структуру и обязательно должно быть поле store.

5d31898b199ab875726437.png

Но как ускорить запрос, чтобы я не ждал 30 секунд?
  • Вопрос задан
  • 63 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Planet_93
@Planet_93
Попробуйте без Where

Store store = storeList
.FirstOrDefault(s => s.StoreId == x.StoreId);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы