.NET对象从collection / enumeration中删除自身

时间:2013-07-06 20:14:11

标签: .net linq-to-sql data-binding binding .net-4.0

这可能是不可能/坏主意但是......

对象是否可以从集合/枚举中删除自身,或者在数据绑定时“跳过”对象?

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

1 个答案:

答案 0 :(得分:1)

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

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();
    }
}

希望这有帮助!