我想知道第一个列表中是否至少有一个元素可以在第二个列表中找到。
我看到两种方法可以做到。假设我们的列表为:
List<string> list1 = new[] { "A", "C", "F", "H", "I" };
List<string> list2 = new[] { "B", "D", "F", "G", "I" };
第一种方法使用循环:
bool isFound = false;
foreach (item1 in list1)
{
if (list2.Contains(item1))
{
isFound = true;
break;
}
}
第二种方法直接使用了 Linq:bool isFound = list1.Intersect(list2).Any();
第一个方法写起来很冗长,不太直观易读。第二个方法则简短明了,但对于大型列表性能较低。有什么优雅的方法可以解决这个问题吗?
O(list1.Count*list2.Count)
而第二个是O(list1.Count+list2.Count)
。不过第二个需要更多的内存。 - CodesInChaosbool isFound = list1.Any(list2.Contains);
- Ani