Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定列表&;InotifyProperty已更改_C#_Bindinglist - Fatal编程技术网

C# 绑定列表&;InotifyProperty已更改

C# 绑定列表&;InotifyProperty已更改,c#,bindinglist,C#,Bindinglist,我搜索了所有的论坛,但我找不到我的问题的答案。也许我只是用错了关键词。 假设我有一个Foo类: class Foo { string a; string b; } 许多Foo实例现在保存在 BindingList<Foo> bf; 同样,类Bar的许多实例保存在 BindingList<Bar> bb; 是否有可能删除包含f7引用的Bar实例? 目前,我钩住bf的ListChanged事件,手动遍历bb并杀死那些包含f7的Bar实例。有更聪明的方法吗

我搜索了所有的论坛,但我找不到我的问题的答案。也许我只是用错了关键词。 假设我有一个Foo类:

class Foo
{
    string a;
    string b;
}
许多Foo实例现在保存在

BindingList<Foo> bf;
同样,类Bar的许多实例保存在

BindingList<Bar> bb;
是否有可能删除包含f7引用的Bar实例? 目前,我钩住bf的ListChanged事件,手动遍历bb并杀死那些包含f7的Bar实例。有更聪明的方法吗

谢谢你的帮助,
Guido

从你的作品判断。我怀疑你想要这样的东西。您必须确保
Foo
中的
Foo
对象是相同的实例,或者在
Foo
上实现
IEquatable

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();
BindingList bb=newbindingList();
Foo f7=新的Foo();
杆b=新杆();
b、 f1=f7;
b、 f2=新的Foo();

从你的作品判断。我怀疑你想要这样的东西。您必须确保
Foo
中的
Foo
对象是相同的实例,或者在
Foo
上实现
IEquatable

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();
BindingList bb=newbindingList();
Foo f7=新的Foo();
杆b=新杆();
b、 f1=f7;
b、 f2=新的Foo();

你是说
bf.Remove(f7)
?bb包含条,而不是Foos…@ThomasLevesque我认为OP的意思是,如果
Foo
属性之一等于
F7
,他想从列表中删除。所以它确实意味着bb.Remove(f7)在本例中:)ops,确切地说,我的意思是bf.Remove(f7)Remove不会杀死你的对象。它只是从列表中删除对对象的引用。如果您先为引用指定null,然后删除引用,则对该对象的所有引用都将为null。您的意思是
bf.remove(f7)
?bb包含条,而不是Foos…@ThomasLevesque我认为OP的意思是,如果
Foo
属性之一等于
F7
,他想从列表中删除。所以它确实意味着bb.Remove(f7)在本例中:)ops,确切地说,我的意思是bf.Remove(f7)Remove不会杀死你的对象。它只是从列表中删除对对象的引用。如果您先为引用指定null,然后删除引用,则对该对象的所有引用都将为null。@Jan您是说您已经这样做了吗?这正是你要做的吗?@Jan你是说你已经在做了吗?这正是你要做的?