У меня есть следующая структура базы данных, где продукты имеют цену по умолчанию, которая может быть переопределена, если для данного идентификатора найдена строка для этого продукта, если эта строка не существует, возвращается цена по умолчанию. Цены - это EntityCollection, поэтому он не реализует интерфейс IQueryable, я хочу, чтобы эта логика была внутри моей модели, и текущая реализация работает, но использование forloop не кажется очень оптимальным, есть идеи о том, как улучшить этот код?
Таблица
Продукт
ProductID
Name
Price
Скорость
RateID
Name
Цена
PriceID
ProductID
RateID
Price
Модель моего товара:
public partial class Product
{
public decimal GetPrice(Guid rateId) {
foreach (Price p in Prices)
if (p.Rate.RateId == rateId)
return p.NewPrice;
return DefaultPrice;
}
}
Мой контроллер:
public ActionResult Prices() {
var products = storeDB.Products
.Include("Family")
.Include("Prices")
.OrderBy(product => product.Name)
.ToList();
var viewModel = new ProductPricesViewModel {
Products = products.ToList(),
Rates = storeDB.Rates.ToList()
};
return View(viewModel);
}