我怎么知道ListA是否拥有ListB所拥有的一切?

本文关键字:拥有 ListB ListA 是否 我怎么知道 | 更新日期: 2023-09-27 18:06:58

如果我有以下内容…

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所拥有的一切?

我怎么知道ListA是否拥有ListB所拥有的一切?

使用Enumerable.Except

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

您可以使用原始(慢)方式来确保

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

,尽管这确实对数组

中的每个元素执行穷举搜索

试试这个:

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

还有这个:

bool result2 = listB.Select(input => !listA.Contains(input)).Count() > 0;
bool result = false;
if (listB.Count>listA.Count) result =  listB.Intersect(listA).Count() == listB.Count;
else result =  listA.Intersect(listB).Count() == listA.Count;