繁体   English   中英

数据源在循环时跳过项目?

[英]Data source skipping items while looping?

我已经将数据源绑定到longlistselector,并且效果很好。 我从一个相当大的嵌套json对象检索数据,并且它可以正常工作。 但是,当我尝试通过一个名为“ city”的属性来过滤项目时,会发生一些奇怪的事情。 在我的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;
         }
    }
}

因此,当城市字符串等于“ Venlo”时,我希望将其删除。 City字符串可以是两件事之一,可以是“ Sittard”或“ Venlo”。 当我用“ Sittard”一词过滤列表时,输出是正确的,并且仅显示来自Venlo的项目(这是列表的较大部分),但是当我通过“ Venlo”过滤时,列表仍然包含一些具有城市字符串为“ Venlo”。

当我尝试调试时,我等待的时间越长,列表得到过滤的机会就越多,一段时间后,列表将被完全过滤且正确。 但是,当我在没有断点的情况下运行它时,列表没有得到正确过滤。 这种怪异行为有什么解释吗?

您可能会遇到问题,因为要从循环中使用_gigs.Count作为循环上限的列表中删除项目。 我不确定每次执行循环时是否会重新评估此值,但是如果不执行此操作,则可能会给您带来怪异的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM