3

List<T>オブジェクトのリスト( )aListと別のリストがありbListます。

Linqを使用してにaList含まれるすべてのオブジェクトを削除するにはどうすればよいbListですか?

4

4 に答える 4

8

を見てみましょうList<T>.RemoveAll

aList.RemoveAll(x => bList.Contains(x))

FWIW、これは、これが重要である場合、の各オブジェクトの最初のインスタンスだけでなく、にaList含まれるすべてのオブジェクトも削除します。bListbListaList

于 2012-07-17T13:48:08.010 に答える
7

最も簡単な方法は、これを行うことです。

foreach(var item in bList) aList.Remove(item);

Removeアイテムがまだリストにない場合は何もしません。

「LINQを使用する」とは、LINQを使用して、のアイテムがにあるかどうかを判断することを意味する場合aListbListそれは必要ありません。

LINQソリューションは、次の両方の条件が当てはまる場合にのみ、より効率的になります。

  1. aListに比べて非常に小さいですbList
  2. その中のすべてのアイテムaListbListbList
于 2012-07-17T13:48:14.037 に答える
2

Except拡張メソッドを使用できます。

var result = aList.Except(bList);

IEqualityComparer<T>等価性チェックをカスタマイズする必要がある場合は、2番目の引数としてを渡すこともできることに注意してください。

于 2012-07-17T13:50:10.350 に答える
0

LINQの「Except」拡張機能を確認してください。

http://www.dotnetperls.com/except

コレクションから要素を差し引くことを除いて。この拡張メソッドは、.NETFrameworkのSystem.Linq名前空間にあります。基本的に、あるコレクションのすべての要素を別のコレクションから減算します。

于 2012-07-17T13:48:00.677 に答える