1

Я привязал источник данных к longlistselector и работает отлично. Я извлекаю данные из довольно большого вложенного json-объекта, и он работает. Однако, когда я пытаюсь фильтровать элементы одним свойством «город», происходит что-то странное. В моем ViewModel я эту простую проверку:Источник данных пропускает элементы во время цикла?

private ObservableCollection<GigViewModel> _gigs; 
public ObservableCollection<GigViewModel> Gigs 
{ 
    get 
    { 
     for (int i = 0; i < _gigs.Count; i++) 
     { 
      if (_gigs[i].City == "venlo") 
      { 
       _gigs.Remove(_gigs[i]); 
      } 
     } 
     return _gigs; 
    } 
    private set 
    { 
     if (value != _gigs) 
     { 
      _gigs = value; 
     } 
    } 
} 

Так, когда город строка приравнивает «Венло» Я хочу его удалить. Строка города может быть одной из двух вещей, это либо «Ситтард», либо «Венло». Когда я фильтрую список по слову «Sittard», вывод правильный, и он отображает только объекты из Venlo (это большая часть списка), но когда я фильтрую «Venlo», список по-прежнему содержит несколько элементов, которые имеют городская строка как «Венло».

Когда я пытаюсь отлаживать, чем дольше я жду, тем больше список фильтруется, а через некоторое время список полностью фильтруется и исправляется. Но когда я запускаю его без точки останова, список не фильтруется должным образом. Любое объяснение этого странного поведения?

ответ

1

У вас может возникнуть проблема, потому что вы удаляете элементы из списка в цикле, который использует _gigs.Count как верхний предел цикла. Я не уверен, что это значение переоценивается каждый раз, когда цикл выполняется, но если нет, это может привести к странному поведению.

+0

Я думаю, вы запутываете C# с Java. В Java это необходимо, но оператор == работает для строк в C#. Во всяком случае, я все же пробовал, и фильтрация по-прежнему не работает. –

+0

Да, хороший звонок. Я довольно новичок в C#, поэтому я с глупостью предположил, что это то же самое. Я вижу, что ты прав. Теперь я изменил ответ с альтернативным объяснением вашей проблемы. – Choc13

+0

Конечно! Я должен был это видеть. Благодаря! –