我怎么知道ListA是否包含ListB的所有内容?

时间:2013-04-02 15:11:27

标签: c#

如果我有以下内容......

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 个答案:

答案 0 :(得分:10)

使用Enumerable.Except

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

Demo

答案 1 :(得分:2)

你可以用原始(慢)的方式来确保

bool contains_all = true;

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

虽然这确实对数组中的每个元素进行了详尽的搜索

答案 2 :(得分:0)

试试这个:

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

还有这个:

bool result2 = listB.Select(input => !listA.Contains(input)).Count() > 0;

答案 3 :(得分:0)

bool result = false;

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

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