2013-03-20 1 views
1

모든 포럼을 검색했지만 내 질문에 대한 답을 찾을 수 없습니다. 어쩌면 방금 잘못된 키워드를 사용했을 수도 있습니다. 푸의 인스턴스의 수는 지금은 유형의 객체 사이의 관계의 일종을 실현하는 두 번째 클래스가 그 다음BindingList & InotifyPropertyChanged

BindingList<Foo> bf; 

에 저장됩니다

class Foo 
{ 
    string a; 
    string b; 
} 

: 의 내가 클래스 푸를 가정 해 봅시다 푸 :

class Bar 
{ 
    Foo f1; 
    Relation r; 
    Foo f2; 
} 

다시, 클래스 바의 인스턴스의 수는

,691에 저장됩니다
BindingList<Bar> bb; 

내 프로그램의 특정 지점에서 이제 F7 인스턴스 (예 : f7)를 삭제합니다.

bb.Remove(f7); 

가능성은 바의 바로 그 인스턴스가 F7에 대한 참조를 유지하는 삭제됩니다 있나요? 지금은 bf의 ListChanged 이벤트를 연결하고 수동으로 bb를 탐색하고 f7이 포함 된 Bar 인스턴스를 종료합니다. 더 똑똑한 방법이 있습니까? 당신의 도움에 대한

감사합니다, 당신의 영업 이익으로 판단 귀도

+0

'bf.Remove (f7) '를 원하셨습니까? bb는 Foos가 아닌 Bars를 포함합니다 ... –

+0

@ThomasLevesque 저는 OP가 의미하는 바는'Foo' 속성 중 하나가'F7'과 같은 경우 목록에서 제거하려고한다는 것입니다. 따라서이 경우에는 'bb. 제거 (f7)'을 의미합니다. – LukeHennerley

+0

작전은 정확하게 bf를 삭제합니다. 제거 (f7) – Jan

답변

1

. 나는 당신이 이런 것을 원한다고 생각합니다. 개체가 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(); 
+0

좋아, 그게 내가하는 일이야 ... – Jan

+0

@Jan 당신은 이미이 일을하고 있니? 이것은 정확히 당신이하려고하는 것입니까? – LukeHennerley