根据我了解到的情况,您不能强制转换为 BindingList,而是可以使用新的 BindingList 包装来自 Linq 查询的结果。但是,这对我不起作用,因为我的原始绑定列表附加了一些事件,我想在我的 LINQ 结果集中维护相同的事件。
例如:
我有我的主要 BindingList 集合,称为“报告”(IReport 类型)。此集合正在注册到如下事件:Reports.AddingNew += OnAddNewXReport;
现在,当我想过滤这个大集合并只提取少数匹配项时,我正在使用 Linq 来获取这个匹配列表。为了使该列表成为 BindingList,我需要执行以下操作:
var rs = Reports.Where(r => r.ReportType == ReportType.MyType).Select(o => (MyType) o);
return new BindingList<MyType>(rs.ToList());
如您所见,这个新创建的集合在添加新项目时不会触发。
有谁知道如何解决这个问题?无论如何要关闭从原始 BindingList 到“过滤”的 BindingList 的事件订阅?
谢谢您的帮助