如何使用C#比较两个列表?

时间:2012-03-28 18:21:27

标签: c# .net linq file

我有两个列表如何检查list1是否有一些来自list2的项目

因为我有:

list1 = ["car","424", "fwe"]
list2 = ["car", "cat"]

可能是这样的:

if list1 has elements from  list2

然后返回true

4 个答案:

答案 0 :(得分:8)

您可以使用LINQ IntersectExcept函数。

答案 1 :(得分:8)

您可以使用与任何相交:

list1.Intersect(list2).Any()

答案 2 :(得分:1)

最佳解决方案实际上取决于您的具体情况。

例如,您可以比较每对元素,这将是一个非常简单的实现。但是,如果列表很长,这并不是特别有效。

第二个选项是将一个列表的所有元素添加到HashSet,然后尝试添加第二个列表的所有元素。如果存在共同的元素,则在尝试添加副本时,HashSet Add()方法将返回false。这对于大型列表来说会更快,但需要额外的内存,并且可能会产生可读性较低的代码。

答案 3 :(得分:0)

另一种可能的解决方案:

list1.Any(e => list2.Contains(e));