私は2つのIEnumerable
オブジェクトを持っていて、そのうちの1つに他のすべての要素が含まれている場合は検証したいと思います。IEnumerableにIEnumerableが含まれています
私はobj1.Intersect(obj2).Any()
を使用していますが、交差点は期待通りに機能しません。 obj2
のいずれかの要素がobj1
に存在する場合でもtrueを返します。
obj2
のすべての要素がobj1
に存在するかどうかを確認する方法はありますか?
私は2つのIEnumerable
オブジェクトを持っていて、そのうちの1つに他のすべての要素が含まれている場合は検証したいと思います。IEnumerableにIEnumerableが含まれています
私はobj1.Intersect(obj2).Any()
を使用していますが、交差点は期待通りに機能しません。 obj2
のいずれかの要素がobj1
に存在する場合でもtrueを返します。
obj2
のすべての要素がobj1
に存在するかどうかを確認する方法はありますか?
ラムダを指定しなくても必要なものを実行する単一のLINQメソッドはありません。しかし、LINQでそれを行うには複数の方法があります。
obj1.Intersect(obj2).Count() == obj2.Count()
または
obj2.All(x=>obj1.Contains(x))
または
obj2.Except(obj1).Any()
利用代わりに '' Intersect.Any'のALL':ここではいくつかのオプションがある(
obj2
がobj1
のサブセットであるかどうかをテストするために) – zerkms同じ順序でそれらを使いたい場合は、 'SequenceEqual'を使うことができます。それ以外の場合は、交差部分がサブシーケンスと同じ長さであることを確認できます。 – Blorgbeard
@zerkms 'All()'は動作しません。すべて何? 'Any()'はアイテムが存在することを意味し、 'All()'はラムダなしで無意味です。 – Blorgbeard