Как асинхронно найти и вернуть элемент объекта класса содержащий свойство с максимальным значением? .NET
Есть класс модели Order:
public class Order
{
public int Id { get; set; }
public string ProductName { get; set; }
public int Price { get; set; }
public int Quantity { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
Есть такой метод:
public Task<Order> GetOrder()
{
var orders=_dataManager.Orders.GetOrders();
//return orders.Aggregate((x,y)=>x.Price>y.Price?x:y);
}
Необходимо найти заказ с самой большой суммой и вернуть это дело асинхронно. Как быть?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Если есть только синхронный источник данных и решать в лоб, то как-то так
public Task<Order> GetMaxPriceOrder()
{
return Task.Run(() =>
{
var orders = _dataManager.Orders.GetOrders();
return orders.OrderByDescending(order => order.Price).First(); // или FirstOrDefault
});
}
Для .NET 6+
public Task<Order> GetMaxPriceOrder()
{
return Task.Run(() =>
{
var orders = _dataManager.Orders.GetOrders();
return orders.MaxBy(order => order.Price);
});
}