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