gpt4 book ai didi

c# - 过滤 ICollection

转载 作者:行者123 更新时间:2023-11-30 20:53:11 29 4
gpt4 key购买 nike

此代码不起作用,但是:

public virtual ICollection<SomeItem> items { get { return (ICollection<SomeItem>)items.Where(e => e.isVisible == true); } set { ;} }

我想为此做点什么。因此,要获得按集合元素的属性过滤的 ICollection。

当然,我可以遍历元素,找到正确的元素,将它们放入新集合中并返回,但是有更好的解决方案吗?

最佳答案

也许您正在寻找的是 Extension Method

Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type.

public static class ExtensionMethods
{
public static ICollection<SomeItem> OnlyVisible(this ICollection<SomeItem) items) {
return items.Where(e => e.isVisible).ToList();
}
}

请注意,Where 返回一个您无法修改的 IEnumerable,因此我调用了 ToList(),它基本上完成了您最后一句话中的所有操作.

然后你会像这样使用它:

void Foo(ICollection<SomeItem> items) {

foreach (var i in items.OnlyVisible()) {
// Use i
}
}

关于c# - 过滤 ICollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156408/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com