Добавление другого ответа, чтобы разместить дополнительные НСФО, которые пришли в комментариях:
- Объекты могут быть идентифицированы хеш-кодом
- Список очень большой, поэтому производительность - это проблема
- Идея состоит в том, чтобы сравнить старый список с новым списком, чтобы узнать, появились ли какие-либо новые хеш-коды.
Вы хотите хранить свои объекты в словаре:
var list = new Dictionary<string, CustomObject>();
Когда вы добавляете их, предоставить хэш как ключ:
list.Add(customObject.Hash, customObject);
Для поиска новых:
var difference = new List<CustomObject>();
foreach (customObject o in newList)
{
if (oldList.ContainsKey(o.Hash)) difference.Add(o);
}
Log(String.Format("{0} new hashes found.", difference.Count));
Используя словарь, вы воспользуетесь способом t ключи хранятся в хеш-таблице. Поиск элемента в хеш-таблице быстрее, чем просто проверка & сравнить вещи. Я полагаю, что это будет O (n * log (n)) вместо O (n^2).
Вам просто нужно сравнить экземпляры объектов, или вам нужно выполнить глубокое сравнение всех свойств? –
Мне довольно просто нужно сравнить значение foo каждой записи списка. Думаю, это значит, что это так сильно сравнится? – CiriousJoker
Является ли list1 вашим исходным списком, а list2 является текущим списком после изменений и т. Д.? Если вы действительно просите отслеживать, что изменилось в одном списке с течением времени, это совсем другой вопрос (и тот, который имеет более простой ответ, чем сравнение двух списков). – PMV