Представьте себе следующий тип:
public struct Account
{
public int Id;
public double Amount;
}
Каков наилучший алгоритм для синхронизации двух IList<Account>
в С# 2.0? (Нет linq)?
Первый список (L1) - это список ссылок, второй (L2) - тот, который будет синхронизироваться в соответствии с первым:
- Все учетные записи в L2, которые больше не присутствуют в L1, должны быть удалены из L2
- Все учетные записи в L2, которые все еще существуют в L1, должны быть обновлены (атрибут суммы)
- Все учетные записи, которые находятся в L1, но еще не включены в L2, должны быть добавлены к L2
Идентификатор идентифицирует учетные записи. Нелегко найти наивный и рабочий алгоритм, но я хотел бы знать, есть ли интеллектуальное решение для обработки этого сценария, не нарушая читаемости и perfs.
ИЗМЕНИТЬ:
- Тип учетной записи не имеет значения, может быть класс, имеет свойства, члены равенства и т.д.
- L1 и L2 не сортируются
- Элементы L2 не могут быть заменены элементами L1, они должны быть обновлены (поле за полем, свойство по свойству)