C# 在集合中循环时从ObservableCollection中删除项
我在ObservableCollection中循环查找通过将布尔值设置为true来标记的项。在对该项执行所需操作后,我希望将其从OnservableCollection中删除。我不能在foreach循环中这样做,所以我想列出所有标记的项,然后在foreach循环之后,立即清除集合中的所有项。但我甚至不能开始,因为我不知道如何在foreach循环中获取项的索引C# 在集合中循环时从ObservableCollection中删除项,c#,wpf,list,mvvm,observablecollection,C#,Wpf,List,Mvvm,Observablecollection,我在ObservableCollection中循环查找通过将布尔值设置为true来标记的项。在对该项执行所需操作后,我希望将其从OnservableCollection中删除。我不能在foreach循环中这样做,所以我想列出所有标记的项,然后在foreach循环之后,立即清除集合中的所有项。但我甚至不能开始,因为我不知道如何在foreach循环中获取项的索引 private void Upload() { List&
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));
}
private void Upload()
{
列表杀戮;
foreach(测试结果中的var tr)
{
如果(tr.CanUpload)
{
StatusContent=“上传”+tr.FileName;
上传文件(tr);
kill.Add(tr);
tr.CanUpload=false;
RaisePropertyChanged(“测试结果”);
}
}
//这不管用
//Remove(TestResults.Where(x=>x.CanUpload==true));
}
我已经尝试使用上面的方法,但是我缺少了一些关键的部分来让它正常工作。使用for循环。正如您所注意到的,您无法删除使用foreach循环的集合中的项 但删除项目时必须更新当前项目索引;) 像这样的东西应该能起作用
for (var i = myList.Count() - 1; i >= 0; i--)
{
...
}
谢谢你的回答。最后,我在从可观察集合创建的列表上创建了一个foreach循环,然后从集合中删除列表中符合条件的每个项目。欢迎光临。如果你接受并投票,那就太好了。