.NET对象从集合/枚举

问题描述:

这大概是不可能的/坏主意,但.......NET对象从集合/枚举

是否有可能为对象,以自身从集合/枚举删除,或对象是自身删除“跳过“当它是数据绑定?

因此,该对象有效地说“在数据绑定时跳过我”。

这在技术上是两个完全不同的问题。

Q1 - 物体是否可以从集合中移除? 这很大程度上取决于正在使用的集合类。一个明显的要求是,包含的对象必须包含它所包含的集合的引用。另一个要求是枚举集合时不能发生。这可能不是你想要走的路。

Q2 - 数据绑定时可以跳过一个对象吗? 我不知道任何支持这个的内置集合类,但应该可以通过编写一个自定义枚举器(检查元素并跳过应该排除的元素)来容器类。

这就是说,它可能是更容易使用LINQ查询作为数据源:

List<Foo> foos = new List<Foo>(); 
var query = foos.Where(f => f.IsNotExcluded); 
BindingSource bs = new BindingSource(query); // bind to query instead of foos 

您也可以公开时,过滤列表的属性,如果你需要的是:

public class FooManager 
{ 
    private List<Foo> foos = new List<Foo>(); 

    public IQueryable<Foo> OnlyEnabledFoos 
    { 
     return foos.Where(f => f.IsNotExcluded).AsQueryable(); 
    } 
} 

希望这会有所帮助!