簡體   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