c# - 满足条件时从列表中删除项目

标签 c# .net list class foreach

我正在编写一个多线程下载管理器,其中下载信息由我编写的一个类(称为 DownloadOperation)管理。下载保存在列表中(称为下载)。当类 (queryCompleted) 中的函数返回 true 但发现无法从 foreach 循环中的列表中删除元素时,我需要从列表中删除对象。达到相同效果的最佳方法是什么?我是 C# 的新手,请原谅我的愚蠢。

private void removeInactiveDownloads()
    {
        foreach (DownloadOperation dl in download)
        {
            if (dl.queryComplete() == true)
            {
                // if download is no longer in progress it is removed from the list.
                download.Remove(dl);
            }
        }
    }

最佳答案

List<T>有方法

public int RemoveAll(
    Predicate<T> match
)

删除与谓词匹配的所有元素:http://msdn.microsoft.com/en-us/library/wdka673a.aspx

因此我建议如下:

download.RemoveAll(x => x.queryComplete());

(请注意,不需要 == true,因为 .queryComplete() 已经返回 true 或 false!)

关于c# - 满足条件时从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437498/

相关文章:

Python 列表分组依据

python - 遍历和访问 JSON 中的内部元素

.net - 调用 UI 委托(delegate)会导致 UI 被隐藏

.net - 为什么“添加引用”中未列出 System.Web.Mvc?

python - 如何修复列表索引超出范围?

c# - 将具有可变属性的 JSON 对象解析为强类型对象

c# - .NET 是否有任何可用的方法来获取两个字符串的差异?

c# - 如何为自定义数据结构制作哈希码?

c# - 如何在 Asp.net Web API 中使用特定的 CultureInfo

javascript - CKeditor 的 KeyDown 事件