-2

私が次のものを持っている場合...

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 のすべてが含まれているかどうかを知るにはどうすればよいですか?

4

4 に答える 4

10

使用するEnumerable.Except

bool allBinA = !listB.Except(listA).Any();

デモ

于 2013-04-02T15:14:19.970 に答える
2

あなたはそれを生の(遅い)方法で行うことができます

bool contains_all = true;

foreach(String s in listA) {
  if(!listB.Contains(s)) {
    contains_all = false;
    break;
  }
}

ただし、これは配列内のすべての要素に対して徹底的な検索を実行します

于 2013-04-02T15:14:18.493 に答える
0
bool result = false;

if (listB.Count>listA.Count) result =  listB.Intersect(listA).Count() == listB.Count;

else result =  listA.Intersect(listB).Count() == listA.Count;
于 2013-04-02T15:15:04.557 に答える
0

これを試して:

bool result = listB.Intersect(listA).Count() == listB.Count;

そしてこれも:

bool result2 = listB.Select(input => !listA.Contains(input)).Count() > 0;
于 2013-04-02T15:13:15.003 に答える