ObservableCollections の RemoveAll? 質問する

ObservableCollections の RemoveAll? 質問する

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);

おすすめ記事