1

我已经搜索了所有论坛,但我找不到我的问题的答案。也许我只是使用了错误的关键字。假设我有一个类 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 实例。有没有更聪明的方法?

谢谢你的帮助,圭多

4

1 回答 1

1

根据您的 OP 判断。我怀疑你想要这样的东西。您必须确保您的Foo对象Bar是相同的实例,或者IEquatableFoo.

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();
于 2013-03-20T14:38:54.860 回答