Работа с разными колекциями - C#
Формулировка задачи:
Строю по задачке модель магазина. В классе "Store" метод "sell_product" нужно сделать по принципу:
1. Берем первого клиента из очереди "queue".
2. Залазим в его список покупок "shopping_list ", берем первый. По имени товара проверяем есть ли товар на складе магазина "products_list".
3. Проверяем хватает ли товара на складе "quantity". Пример: у клиента в списке - "морковка 10 шт." а на складе есть только 5 шт.
4. Проверяем хватит ли у клиента денег "money" на покупку. (price * quantity).
5. Продаем товар, идем дальше по списку покупок.
У меня возникли проблемы с этими коллекциями.
У них нет индексирования. В одном foreach нельзя получить ссылки на объекты сразу 2-х коллекций.
Не получается одновременно доступатся до полей 2-х объектов разных коллекций, чтобы проводить поиск из пункта 2 и проверку полей из пункта 3.
У коллекции SortedSet есть метод Contains(), но он не возвращает объект который нашел. Нужно писать поиск в ручную? или найдется решение по изящнее?
Подскажите как это сделать.
Листинг программы
- class Store
- {
- SortedSet<Product> products_list;//товары на складе
- Queue<Client> queue; //Очередь
- public void sell_product()
- {
- var buyer = queue.Dequeue();
- foreach (var i in buyer.shopping_list)
- {
- }
- }
- }
- class Product
- {
- public string name { get; }
- public double purchase_price { get; }
- public uint quantity { get; }
- }
- class Client
- {
- public Stack<Product> shopping_list { get; } //Список покупок
- public double money { get; }
- }
Решение задачи: «Работа с разными колекциями»
textual
Листинг программы
- public void sell_product()
- {
- var buyer = queue.Dequeue();
- foreach (var i in buyer.Shopping_list)
- {
- IEnumerable<Products> seling = products_list.Where(n => n.Name == i.Name);
- if (seling.ElementAt(0).Quantity < i.Quantity)
- Console.WriteLine("Товар " + seling.ElementAt(0).Name + ": Нет достаточного количества на складе");
- else if (seling.ElementAt(0).Purchase_price * i.Quantity > buyer.Money)
- Console.WriteLine("Недостаточно денег");
- else
- Console.WriteLine("Товар продан");
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д