При получении пользователей от службы REST состояние каждого коммутатора равно false
.Так что вам нужно сохранить свой локальный список.Затем вам нужно проверить с помощью первичного ключа, чтобы узнать, какие пользователи имели state = true
.
Псевдокод:
var oldUsersList = new List<User>(UsersList);
UsersList = await RestService.GetUsers();
foreach (var user in oldUsersList)
{
if (user.State)
{
UsersList.FirstOrDefault(u => u.UserId == user.UserId).State = true;
}
}
Но вы делаетеLazy Loading неправильно!
То, как вы загружаете новые предметы, полностью уничтожает причины, по которым вы вообще хотите использовать Lazy Loading.Вы хотите выполнять отложенную загрузку (= загружать, когда нужны элементы), потому что вам не нужно загружать столько данных одновременно.Но вы всегда загружаете все предметы снова.
Что вам нужно сделать, это всегда загружать только 20 предметов.Затем добавьте эти 20 предметов в ваш локальный список.
Для этого вам нужно иметь возможность вызывать API REST со смещением и ограничением в качестве параметров.
Например: RestService.GetUsers (длинное смещение, длинный лимит)
- Загрузка:
RestService.GetUsers(0, 20);
- Загрузка:
RestService.GetUsers(20, 20);
- Загрузка:
RestService.GetUsers(40, 20);
- Загрузка:
RestService.GetUsers(60, 20);
Затем вы можете добавить результат в свой локальный список.Таким образом, вам не нужно загружать пользователей, которых вы уже загружали в прошлом.Кроме того, благодаря этому у вас не будет проблем с состоянием, поскольку ваши уже загруженные пользователи не меняются.