List<T>オブジェクトのリスト( )aListと別のリストがありbListます。
Linqを使用してにaList含まれるすべてのオブジェクトを削除するにはどうすればよいbListですか?
を見てみましょうList<T>.RemoveAll
aList.RemoveAll(x => bList.Contains(x))
FWIW、これは、これが重要である場合、の各オブジェクトの最初のインスタンスだけでなく、にaList含まれるすべてのオブジェクトも削除します。bListbListaList
最も簡単な方法は、これを行うことです。
foreach(var item in bList) aList.Remove(item);
Removeアイテムがまだリストにない場合は何もしません。
「LINQを使用する」とは、LINQを使用して、のアイテムがにあるかどうかを判断することを意味する場合aList、bListそれは必要ありません。
LINQソリューションは、次の両方の条件が当てはまる場合にのみ、より効率的になります。
aListに比べて非常に小さいですbListaListはbList、bListExcept拡張メソッドを使用できます。
var result = aList.Except(bList);
IEqualityComparer<T>等価性チェックをカスタマイズする必要がある場合は、2番目の引数としてを渡すこともできることに注意してください。
LINQの「Except」拡張機能を確認してください。
http://www.dotnetperls.com/except
コレクションから要素を差し引くことを除いて。この拡張メソッドは、.NETFrameworkのSystem.Linq名前空間にあります。基本的に、あるコレクションのすべての要素を別のコレクションから減算します。