1. ホーム
  2. c#

RemoveAll for ObservableCollections?

2023-10-01 17:28:42

質問

ObservableCollectionから選択した項目を削除するLinqの方法(ListのRemoveAllメソッドのようなもの)を探しています。

私は自分自身のための拡張メソッドを作成するにはあまりにも新しいです。Lambda式を渡すObservableCollectionから項目を削除する方法はありますか?

どのように解決するのですか?

選択された項目のみを削除する方法は知りません。しかし、拡張メソッドを作成することは簡単です。

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