Сравнение списков с#

  • Автор темы Автор темы vierasen
  • Дата начала Дата начала

vierasen

Client
Регистрация
10.12.2015
Сообщения
619
Реакции
318
Баллы
63
Для теста взял два списка с абсолютно одинаковым содержанием, около 50 элементов. По идее должно работать так: если элемент из первого списка присутствует во втором списке, то он удаляется. На практике удалилось при тесте, ровно половина элементов, причем через 1, т.е. 1й удалился, 2й остался. Где может быть допущена ошибка?

Код:
Развернуть Свернуть Копировать
var postlist = project.Lists["list1"];
var postlistnow = project.Lists["list2"];
lock (SyncObjects.ListSyncer)
{
for (int i=0; i < postlist.Count; i++)
{
  
    var firstlist = postlist[i];
    if (postlistnow.Contains(firstlist))
    {
    postlist.RemoveAt(i);
    }
}
}
 
в том что считаете от начала к концу, а список уменьшается
нужно обратно считать: от количества строк списка до 0
 
Так попробуйте.

Код:
Развернуть Свернуть Копировать
var postlist = project.Lists["list1"];
var postlistnow = project.Lists["list2"];
lock (SyncObjects.ListSyncer)
{
int count = postlist.Count;
for (int i=0; i < count; i++)
{
    var firstlist = postlist[i];
    if (postlistnow.Contains(firstlist))
    {
    postlist.RemoveAt(i);
    count --;
    i--;
    }
}
}
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)