Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 107 стр.

UptoLike

106
запроса выбираются все заказы на заданный товар, далее они
просматриваются, пока не будет исчерпано количество товара. Если товара
на складе достаточно для полного выполнения заказа, он считается
обслуженным и удаляется из списка заказов. Возможно частичное
выполнение заказа, если в наличии товара меньше, чем требовалось
покупателю.
// метод добавления заказа в список
public void AddZakaz(Tovar t, int count)
{
Zakaz z = new Zakaz(t, count);
list.Add(z);
}
// метод выполнения заказа и удаления его из списка
public void RemoveZakaz(Tovar t, int count)
{
// заказов может быть выполнено несколько,
// поэтому обращаемся к ним в цикле
while (true)
{
// если количество исчерпано, заканчиваем метод
if (count == 0) return;
// ищем заказы на данный товар
List<Zakaz> items = (from s in list
where s.tovar.Equals(t)
select s).ToList<Zakaz>();
// если заказов нет, заканчиваем реализацию
if (items.Count() == 0) return;
foreach (Zakaz z in items)
{
if (z.Count <= count)
{
// заказ выполнен полностью – корректируем
// количество и удаляем заказ из списка
count -= z.Count;
list.Remove(z);
break;
}
else
{
// заказ выполнен не полностью
z.Count -= count;
count = 0;
break;
}
}
}
}
запроса выбираются все заказы на заданный товар, далее они
просматриваются, пока не будет исчерпано количество товара. Если товара
на складе достаточно для полного выполнения заказа, он считается
обслуженным и удаляется из списка заказов. Возможно частичное
выполнение заказа, если в наличии товара меньше, чем требовалось
покупателю.
    // метод добавления заказа в список
    public void AddZakaz(Tovar t, int count)
    {
       Zakaz z = new Zakaz(t, count);
       list.Add(z);
    }

    // метод выполнения заказа и удаления его из списка
    public void RemoveZakaz(Tovar t, int count)
    {
        // заказов может быть выполнено несколько,
        // поэтому обращаемся к ним в цикле
        while (true)
        {
           // если количество исчерпано, заканчиваем метод
           if (count == 0) return;
           // ищем заказы на данный товар
           List items = (from s in list
                                where s.tovar.Equals(t)
                                select s).ToList();
           // если заказов нет, заканчиваем реализацию
           if (items.Count() == 0) return;
           foreach (Zakaz z in items)
           {
              if (z.Count <= count)
              {
                 // заказ выполнен полностью – корректируем
                 // количество и удаляем заказ из списка
                 count -= z.Count;
                 list.Remove(z);
                 break;
              }
              else
              {
                 // заказ выполнен не полностью
                 z.Count -= count;
                 count = 0;
                 break;
              }
          }
      }
}


                                                                    106