LINQ を使用してリストから要素を削除する 質問する

LINQ を使用してリストから要素を削除する 質問する

次のような LINQ クエリがあるとします。

var authors = from x in authorsList
              where x.firstname == "Bob"
              select x;

authorsListが型である場合、のクエリによって に返される要素を からList<Author>削除するにはどうすればよいでしょうか?AuthorauthorsListauthors

または、言い換えると、 から Bob に等しいファーストネームをすべて削除するにはどうすればよいでしょうかauthorsList?

注: これは質問の目的のために簡略化された例です。

ベストアンサー1

まあ、まずはそれらを除外する方が簡単でしょう:

authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();

authorsListしかし、これは以前のコレクションから著者を削除するのではなく、値を変更するだけです。代わりに、RemoveAll:

authorsList.RemoveAll(x => x.FirstName == "Bob");

実際に別のコレクションに基づいて実行する必要がある場合は、HashSet、RemoveAll、Contains を使用します。

var setToRemove = new HashSet<Author>(authors);
authorsList.RemoveAll(x => setToRemove.Contains(x));

おすすめ記事