【问题标题】:.NET object remove itself from collection / enumeration.NET 对象从集合/枚举中删除自身
【发布时间】:2023-04-04 00:25:02
【问题描述】:

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

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

所以对象有效地表示“数据绑定时跳过我”。

【问题讨论】:

    标签: .net linq-to-sql data-binding binding .net-4.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();
        }
    }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多