ObservableCollection から選択した項目を削除できる Linq の方法 (List の RemoveAll メソッドなど) を探しています。
自分用の拡張メソッドを作成するには初心者すぎます。Lambda 式を渡して ObservableCollection から項目を削除する方法はありますか?
ベストアンサー1
選択した項目だけを削除する方法は知りません。ただし、拡張メソッドを作成するのは簡単です。
public static class ExtensionMethods
{
public static int Remove<T>(
this ObservableCollection<T> coll, Func<T, bool> condition)
{
var itemsToRemove = coll.Where(condition).ToList();
foreach (var itemToRemove in itemsToRemove)
{
coll.Remove(itemToRemove);
}
return itemsToRemove.Count;
}
}
これにより、条件に一致するすべての項目が削除されますObservableCollection
。次のように呼び出すことができます。
var c = new ObservableCollection<SelectableItem>();
c.Remove(x => x.IsSelected);