Введение
Имея некую текущую коллекцию объектов и новую коллекцию, нам
необходимо узнать какие элементы были добавлены в оригинал, а которые были
удалены.
Описание
Что бы было проще, назовем текущую коллекцию А, а новую
коллекцию, в которой будут изменения – B
Объекты, которые удалены содержатся в коллекции А, но не содержаться в BОбъекты, которые добавлены – это те объекты, которые содержатся
в коллекции B, но не содержаться в A
Код:
Опишем сказанное выше с помощью следующего кода:
public static void Compare<T>(List<T> existing, List<T> updated, out List<T> added, out List<T> removed) where T : IComparable
{
added = updated.Except(existing).ToList();
removed = existing.Except(updated).ToList();
}
В принципе, как вы видите ничего сложного.
Пример
Теперь прикинем на примере:
static void Main(string[] args)
{
List<int> A = new List<int>();
List<int> add = new List<int>();
List<int> rmv = new List<int>();
// Заполняем первую коллекцию
for (int i = 0; i < 10; i++){ A.Add(i); }
// Копируем коллекцию
List<int> B = new List<int>(A);
// Вносим изменения
B.Add(11); B.Add(-1); B.Remove(3); B.Remove(5);
Compare(A, B, out add, out rmv);
Console.Write("Added: ");
foreach (int a in add) { Console.Write(a + "; "); }
Console.Write("\nRemoved: ");
foreach (int r in rmv) { Console.Write(r + "; "); }
Console.ReadLine();
}
Комментарии
Отправить комментарий