Работа с разными колекциями - 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("Товар продан"); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д