在C#中,如何确定列表是否包含其他列表中的任何项目?

时间:2013-10-29 02:20:50

标签: c# linq collections

我有一个清单:

var list = new List<string>();
list.Add("Dog");
list.Add("Cat");
list.Add("Bird");

var list2 = new List<string>();
list2.Add("Dog");
list2.Add("Cat"):

if (list.ContainsAny(list2))
{
      Console.Write("At least one of the items in List2 exists in list1)"
}

2 个答案:

答案 0 :(得分:18)

您正在查看列表的“交集”是否为非空:

if(list.Intersect(list2).Any())
    DoStuff();

答案 1 :(得分:0)

您只需要Enumerable.Intersect,如下所示:

if (list.Intersect(list2).Any())
{
  Console.Write("At least one of the items in List2 exists in list1)"
}

此方法通过使用默认的相等比较器来比较值来生成两个序列的集合交集。它返回一个序列,其中包含构成两个序列的集合交集的元素。Enumerable.Any()方法确定序列是否包含任何元素。