Пример #1
0
 /// <summary>
 /// Обновляет поступления ОСП.
 /// </summary>
 /// <param name="ospReceipts">Новый список поступлений</param>
 public void UpdateReceipts(IEnumerable <ReceiptDTO> ospReceipts)
 {
     // Если список не пустой.
     if (ospReceipts.Count() > 0)
     {
         // Получить новые объекты.
         ReceiptDTO[] added = ospReceipts.Except(Receipts, new ReceiptDTOComparer()).ToArray();
         // Получить удаленные объекты
         ReceiptDTO[] removed = Receipts.Except(ospReceipts, new ReceiptDTOComparer()).ToArray();
         // Получить существующие объекты.
         ReceiptDTO[] existing = Receipts.Intersect(ospReceipts, new ReceiptDTOComparer()).ToArray();
         // Добавить в список новые объекты.
         if (added.Any())
         {
             for (int i = 0; i < added.Count(); i++)
             {
                 Receipts.Add(added[i]);
             }
         }
         // Убрать из списка удаленные объекты.
         if (removed.Any())
         {
             for (int i = 0; i < removed.Count(); i++)
             {
                 Receipts.Remove(removed[i]);
             }
         }
         // Обновить свойства существующим объектам.
         if (existing.Any())
         {
             foreach (var exist in existing)
             {
                 UpdateReceipt(exist);
             }
         }
     }
     // Если список новых пустой очистить список поступлений.
     else
     {
         Receipts.Clear();
     }
 }