2016-06-25 5 views
1

私は動的に取り込まれる観察可能なコレクションを持っています。私はeventsと呼ばれる項目のリストを通してそれを設定します。イベントがイベントリストから削除される可能性がある状況があります。この場合、オブザーバブルコレクションからイベントを削除する必要があります。アイテムが観察可能なコレクションに存在するかどうかを確認します

私が探しているのは、これを行う簡単でスピーディな方法です。

bool exist = events.Where(x => x.Home == obCollection[x].Home).Any(); 

が、私は、インデックスを必要とするので、私はx要素を通してobCollectionにアクセスすることはできません、とxは実際の項目である:私は次のことを試してみました。私はこれを修正して正しい要素を生成する必要があり、その後、私はobservableコレクションの残りの要素を削除する必要があります。

+0

ので、あなたは 'events'と' obCollection'から項目を削除する必要があり、両方が同じで、 'index'を持っていますコレクション ?または両方が 'Home'に対して同じ値を持っていますか? – user3185569

+0

イベントは自動的に更新され、既にアイテムが削除されています。イベントの項目がobCollectionに存在しないことを確認してobCollectionから削除する必要があります – pollonz

+0

とはい、どちらも同じ値を持っています – pollonz

答えて

2

申し訳ありませんが最初の答えはまったく逆です。

だから、あなたは自動的にevents一覧から削除されたものObservableCollectionから削除する必要があります。

var notFoundInEvents = obCollection.Where(x => !(events.Any(o => o.Home == x.Home))).ToList(); 

foreach (var toBeRemoved in notFoundInEvents) 
{ 
    obCollection.Remove(toBeRemoved); 
} 
+0

非常にいいですが、これは単なるチェック条件ですか、それともすべてのアイテムを削除しますか?私は最後の==偽の状態を理解していない、ビットを説明することができます、ありがとう – pollonz

+0

@pollonz上記の編集を確認してください。それが明確でない場合は私に教えてください。 – user3185569

+0

ああ、アイテムが見つからないので、removeAllはobCollection内のアイテムを削除します。現在はクリアです。ありがとうございました – pollonz

関連する問題