- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我可以做这样的事情吗:
collection.RemoveAll(collection.OfType<type>());
要从集合中删除给定类型的所有元素?
最佳答案
两个已经提交的答案都是正确的,但是省略了为什么发布者的示例代码不起作用的解释。几个有趣的观点:
首先,RemoveAll()
未在 ICollection
中定义或 ICollection<T>
界面;它在 List<T>
上定义,例如,但在 HashSet<T>
上的语义等效方法叫做RemoveWhere()
.如果您希望能够对任何 ICollection<T>
执行此操作, 你应该写一个扩展方法。
其次,问题的示例代码传递了一系列要从集合中删除的项目,但是 List<T>.RemoveAll()
和 HashSet<T>.RemoveWhere()
采用谓词来标识要删除的项目(如其他答案所示)。你可以编写你的扩展方法来采用另一种方法,并传递 IEnumerable<T>
就像你的例子一样。但是,您需要小心,因为您不能这样做:
foreach (var item in collection)
if (ShouldRemove(item))
collection.Remove(item);
如果你尝试这样做,你应该得到一个 InvalidOperationException
带有类似“集合已修改;枚举操作可能无法执行。”的消息。
关于c# collection.RemoveAll(collection.OfType<type>());,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362440/
我有以下代码,用于检测 Silverlight 应用程序中某个点下方的所有元素 然后将它们过滤为仅特定类型的那些 - CardButton IEnumerable elementsBeneathCur
如何通过相关属性中的“OfType”过滤 LINQ 查询? 示例:我在 OrderLines 集合中搜索包含匹配的 productID 列表中的产品的订单行。我想使用 contains 来完成这个:
重要 问题不是“Queryable.OfType 有什么作用,而是“我在那里看到的代码是如何实现的?” 反射(reflection) Queryable.OfType,我看到(经过一些清理):
我正在尝试使用 ngrx/store 开发应用程序,但出现错误。无法弄清楚问题。有人帮帮我吗? 这是我的错误: ERROR in src/app/store/effects/authenticatio
在TPH继承中,这之间有什么区别吗: context.Firms.OfType() 还有这个: context.Firms.Where(item => item is RedFirm); 在性能方面?
我正在尝试过滤我的实体中的派生类,但出现异常。 var filtered = db.PersonSet.OfType(). Where(person =>person.G
我有一行代码可以清除表单中的所有标签 Controls.OfType().ToList().ForEach(p => p.Visible = false); 现在我需要从该列表(如标题标签)中排除特定
我有以下词典: public Dictionary Items; 现在我需要获取字典项的值 来自特定类型的所有项。 (例如“int”) var intValues = Items.OfType>根本行
在我的 WPF 应用程序中,我有以下行: var windowList = Application.Current.Windows.OfType().ToList(); 这将返回 2 个结果。这些结果
我正在努力理解我可以做以下事情。我有一个带有静态列表的抽象类,它应该存储任何派生类的对象。同样在抽象类中,我有方法应该只处理调用派生类的对象。但是我该怎么做呢? GetType() 或 typeof(
考虑使用以下代码行: List listOfDivs = this.clientGrid.Controls.OfType() .To
假设我有一个父实体“公司”和一些继承自公司的子实体。假设子项名为“RedFirm”、“GreenFirm”和“BlueFirm”,如果我只想检索 RedFirm 和 GreenFirm 实例,查询 F
我有一个 linq 查询,它选择占位符中的所有文本框并使用结构将它们添加到列表中。我需要扩展此功能以同时获取 DropDownList 的选定值我很确定我做错了,因为当我调试该方法时,列表计数为 0。
我发誓这没有意义。 鉴于我有这个 HttpRouteCollection从 Web API,我根据一些自定义路由类型进行过滤,特别是 IAttributeRoute .我用 httpRoutes.Of
我想过滤 List 中的对象使用它们的类型,使用 OfType<>。 我的问题是,有些对象是通用接口(interface)类型,但它们没有自己的公共(public)继承接口(interface)。 我
除了可读性之外,以下 linq 查询之间的区别是什么以及我何时以及为什么要使用一个而不是另一个: IEnumerable items = listOfItems.Where(d => d is T).
OfType() 是如何工作的? 我读了this link关于发生了什么,但 LINQ 提供程序究竟如何知道如何获取与指定类型匹配的所有对象。我知道 IQueryable “链接”请求,然后在 Get
我有一个包含很多项目的 MenuStrip,我正在尝试让它们都订阅,所以我正在尝试做 menuStrip1.Items.OfType();对于每一个我都这样做: menuitem.Click += n
...或者,我如何通过它们实现的接口(interface)过滤一系列类? 假设我有一个继承自 Foo 的对象序列,即 seq。 .换句话说,我的序列将包含 Foo 的四个不同子类中的一个或多个。 每个
我有类似于以下的类: public abstract class Base { } public class Concrete : Base { } public class Cement : Bas
我是一名优秀的程序员,十分优秀!