私が次のものを持っている場合...
List<string> listA = new List<string>();
listA.Add("a");
listA.Add("b");
listA.Add("c");
listA.Add("d");
List<string> listB = new List<string>();
listB.Add("b");
listB.Add("d");
listA に listB のすべてが含まれているかどうかを知るにはどうすればよいですか?
私が次のものを持っている場合...
List<string> listA = new List<string>();
listA.Add("a");
listA.Add("b");
listA.Add("c");
listA.Add("d");
List<string> listB = new List<string>();
listB.Add("b");
listB.Add("d");
listA に listB のすべてが含まれているかどうかを知るにはどうすればよいですか?
あなたはそれを生の(遅い)方法で行うことができます
bool contains_all = true;
foreach(String s in listA) {
if(!listB.Contains(s)) {
contains_all = false;
break;
}
}
ただし、これは配列内のすべての要素に対して徹底的な検索を実行します
bool result = false;
if (listB.Count>listA.Count) result = listB.Intersect(listA).Count() == listB.Count;
else result = listA.Intersect(listB).Count() == listA.Count;
これを試して:
bool result = listB.Intersect(listA).Count() == listB.Count;
そしてこれも:
bool result2 = listB.Select(input => !listA.Contains(input)).Count() > 0;