我搜索了所有论坛,但我找不到我的问题的答案。也许我只是使用了错误的关键字。 我们假设我有一个Foo类:
class Foo
{
string a;
string b;
}
现在,许多Foo实例都保存在
中BindingList<Foo> bf;
然后我有了第二个类,它实现了Foo类型的对象之间的某种关系:
class Bar
{
Foo f1;
Relation r;
Foo f2;
}
同样,类Bar的许多实例都保存在
中BindingList<Bar> bb;
在我的程序中的某个点上,我现在删除了Foo的一个实例,比如f7。
bb.Remove(f7);
是否有任何可能性,确实删除了那些保留对f7的引用的Bar实例? 目前,我挂钩了bf的ListChanged事件并手动遍历bb并杀死那些包含f7的Bar实例。有更聪明的方法吗?
感谢您的帮助, 吉
答案 0 :(得分:1)
根据您的OP判断。我怀疑你想要这样的东西。您必须确保Foo
中的Bar
个对象是同一个实例,或者IEquatable
上的Foo
实施。
var barWhereFoosExist = bb.Where(x => x.f1.Equals(f7) || x.f2.Equals(f7));
foreach(Bar b in barWhereFoosExist)
{
bb.Remove(b);
}
使用类似的东西尝试以上内容。
BindingList<Bar> bb = new BindingList<Bar>();
Foo f7 = new Foo();
Bar b = New Bar();
b.f1 = f7;
b.f2 = new Foo();