此代码不起作用,但是:
public virtual ICollection<SomeItem> items { get { return (ICollection<SomeItem>)items.Where(e => e.isVisible == true); } set { ;} }我想为此做点什么。因此,要获得由集合元素的属性筛选的ICollection,请执行以下操作。
当然,我可以迭代这些元素,并得到正确的元素,将它们放入一个新集合并返回,但是有更好的解决方案吗?
发布于 2013-11-22 23:34:31
也许你要找的是Extension Method
扩展方法使您能够将方法“添加”到现有类型,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。
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
}
}发布于 2013-11-22 23:35:10
尝试:
items.Where(e => e.isVisible == true).ToList()https://stackoverflow.com/questions/20156408
复制相似问题