2017-03-17 45 views
1

我正在通過ObservableCollection爲通過將布爾值設置爲true標記的項目循環。完成我所需要的項目後,我想從OnservableCollection中刪除它。我不能在foreach循環中這樣做,所以我正在考慮列出所有標記的項目,然後在foreach循環之後立即清除集合中的所有項目。但我甚至無法開始,因爲我不知道如何在foreach循環中獲取該項目的索引。在通過集合循環時從ObservableCollection中移除項目

  private void Upload() 
      { 
       List<TestResult> kill; 
       foreach (var tr in TestResults) 
       { 
        if (tr.CanUpload) 
        { 
         StatusContent = "Uploading " + tr.FileName; 
         FileOps.UploadDocument(tr); 
         kill.Add(tr); 
         tr.CanUpload = false; 
         RaisePropertyChanged("TestResults"); 
        } 

       } 
       //this doesn't work 
       //TestResults.Remove(TestResults.Where(x => x.CanUpload == true)); 
      }  

我已經嘗試過使用上面的內容,但我錯過了一些關鍵部分以使其正常工作。

回答

2

改爲使用for循環。就像您注意到的,您無法刪除正在循環使用foreach的集合中的項目。

但是你必須刪除項目時更新您的當前項指數)

像這樣的東西應該做的工作

for (var i = myList.Count() - 1; i >= 0; i--) 
{ 
    ... 
} 
+0

謝謝您的回答。我結束了從可觀察集合創建的列表上的foreach循環,然後從集合中刪除列表中符合條件的每個項目。 – ScottinTexas

+0

歡迎您。當你接受並讚揚它時會很好。 –

相關問題