Если вы просто хотите сохранить снимок и проверить, изменяется ли размер вашего списка (элемент добавлен / удален)
var snapshot = new List<Foo>(list);
Однако, если вы изменяете элементы в списке и хотите проверить, есть ли элементыизменилось, вам придется клонировать каждый элемент.Если вы просто поместите их в другой список, ссылки должны остаться прежними.
var snapshot = list.Select(item => new Foo
{
Property1 = item.Property1,
... ,
PropertyN = item.PropertyN
});
Если вы просто хотите посмотреть, изменится ли счет в списке, вы можете использовать первую версию.
Возможно, у вас есть Идентификатор на ваших объектах, который упрощает решение до чего-то вроде
var snapshot = list.Select(item => item.Id);
Список идентификаторов можно использовать, чтобы увидеть, изменилось ли содержимое.Этот шаблон поможет, если у ваших объектов слишком много памяти.
Однако вы можете использовать ObservableCollection<T>
, в котором есть события для уведомления вас об изменениях.Таким образом, вы можете отслеживать все изменения в коллекции (добавить / удалить / заменить).