У меня есть действие контроллера API, которое выполняет около 10 отдельных запросов linq, которые используются для формирования сводного объекта, который мне нужно отправить обратно клиенту.Все эти запросы linq выполняются для одних и тех же данных.Есть ли способ, которым я могу использовать async / await в этом сценарии, чтобы один оператор linq не должен блокировать выполнение других?Если да, какой самый эффективный способ написать этот асинхронный / ожидающий код?
Подводя итог моему вопросу:
- Есть ли у меня сценарий использования асинхронной / ожидающей в этом сценарии?
- Если это так, вместо того, чтобы создавать кучу независимых задач и затем помещать их все в Task.WhenAll (), есть более эффективный способ написать это, чтобы я мог легко добавить больше запросов linq позжена?(ничего слишком сумасшедшего, просто чистое и удобное в обслуживании).
[HttpGet]
public IActionResult GetInventoryDetails(string id)
{
var inventory = _storeInventoryRepo.FindByCondition(s => s.Id = id)
var uniqueProductCount = inventory.Select(x => x.ProductId).Distinct().ToList().Count
var totalProductInventoryValue = inventory.Sum(x =>x.UnitPrice & x.TotalUnits)
var cheapestProduct = inventory.OrderBy(x => x.unitPrice).Select(x => x.ProductId).First();
var inventorydetails = new InventoryDetails
{
UniqueProductCount = uniqueProductCount,
TotalProductInventoryValue = totalProductInventoryValue,
CheapestProduct = cheapestProduct
}
Return Ok(inventoryDetails)
}
public class ProductInventory
{
public string Id { get; set; }
public string ProductId { get; set; }
public int UnitPrice { get; set; }
public double TotalUnits { get; set; }
}
Как бы я использовал async / await, чтобы можно было выполнить uniqueProductCost, totalProductInventoryValue и самый дешевый продукт, не дожидаясь его завершения?