次のような LINQ クエリがあるとします。
var authors = from x in authorsList
where x.firstname == "Bob"
select x;
authorsList
が型である場合、のクエリによって に返される要素を からList<Author>
削除するにはどうすればよいでしょうか?Author
authorsList
authors
または、言い換えると、 から 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));