Добавьте товар с большим количеством цен в корзину покупок
Привет!
Я пытаюсь добавить продукт со многими ценами в корзину покупок(структура сущностей отношений "один ко многим"). Клиент выбрал специальный размер с его ценой в презентации продукта (короткий список с кнопками справа). Теперь я хочу добавить этот выбранный продукт, размер и цену в свою корзину покупок. Проблема в том, что я не знаю, как получить доступ к конкретной цене (конкретному значению в списке ItemPrice).
Для начала - вот мои классы и мой DbContext:
public class Item { private readonly ICollection<ItemPrice> Price; public Item(ICollection<ItemPrice> price = null) { Price = price; } public Item() : this(null) { } [Key] public int ItemID { get; set; } [Required(ErrorMessage = "Please enter an product name")] public string Name { get; set; } [Required(ErrorMessage = "Please specify a category")] public string Category { get; set; } public string SubCategory { get; set; } public string Description { get; set; } public string ImageSmallUrl { get; set; } public string ImageSmallAlternativeDescription { get; set; } public string ImageSmallContentType { get; set; } public virtual ICollection<ItemPrice> Prices { get; set; } } public class ItemPrice { [Key] public int ID { get; set; } public int ItemID { get; set; } public string Size { get; set; } public decimal Value { get; set; } public virtual Item Item { get; set; } } public class ApplicationDbContext : DbContext { public ApplicationDbContext (DbContextOptions<ApplicationDbContext> options) :base(options) {} public DbSet<Item> Items { get; set; } public DbSet<ItemPrice> ItemPrices { get; set; } protected override void OnModelCreating (ModelBuilder modelBuilder) { modelBuilder.Entity<ItemPrice>() .HasOne(p => p.Item) .WithMany(b => b.Prices); } }
Я начал работать над магазинной тележкой и картитемом, но теперь я застрял. Я не знаю, как продолжать. Вот классы ShoppingCart и CartItem:
public class ShoppingCart { private List<CartItem> cartItemCollection = new List<CartItem>(); public virtual void AddCartItem(Item item, int quantity) { CartItem cartItem = cartItemCollection .Where(p => p.Item.ItemID == item.ItemID) .FirstOrDefault(); if(cartItem == null) { cartItemCollection.Add(new CartItem { Item = item, Quantity = quantity }); } else { cartItem.Quantity += quantity; } } public virtual void RemoveCartItem(Item item) => cartItemCollection.RemoveAll(l => l.Item.ItemID == item.ItemID); public virtual decimal ComputeTotalValue() { return cartItemCollection.Sum(e => e.Item.Prices.) * e.Quantity); } } public class CartItem { public int CarItemID { get; set; } public Item Item { get; set; } public int Quantity { get; set; } }
Я пробовал разные лямбда-выражения и LINQ, но они не работают. Как я могу получить конкретное значение (одно из свойств класса ItemPrice), чтобы получить сумму? Очень благодарен за помощь здесь!
Что я уже пробовал:
Я искал в интернете в течение двух дней и не мог найти хорошего ответа на эту проблему и, конечно же, перепробовал много различных подходов в коде.
Dodido_72
Чтобы уточнить - я хочу этого добиться:
public virtual decimal ComputeTotalValue()=>
cartItemCollection.Сумма(e => e.Item.Цена * е. Количество);
Но поскольку мой товар(он же продукт) имеет несколько цен, я застрял в них
cartItemCollection.Сумма(e => e.Item.Цены. * e.количество).
Что я должен добавить после цены, чтобы получить значение выбранного экземпляра, чтобы его можно было умножить на количество-значение??