如何查找列表的元素是否在另一个列表中以及元素的名称?

时间:2013-06-07 10:49:20

标签: c# performance

首先,我想知道第一个列表中是否至少有一个元素可以在第二个列表中找到。

List<string> list1 = new[] { "A", "C", "F", "H", "I" };
List<string> list2 = new[] { "B", "D", "F", "G", "L" };

我使用下面的代码来执行此操作 -

bool isFound = list1.Intersect(list2).Any();

但我想知道那个元素是什么。与上述情况一样,它是'F'

这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:4)

您只需使用Intersect

var result = list1.Intersect(list2);

答案 1 :(得分:2)

您只能使用Enumerable.Intersect方法,在您的情况下无需使用Any

  

生成两个序列的集合交集。

List<string> list1 = new List<string>(){ "A", "C", "F", "H", "I" };
List<string> list2 = new List<string>(){ "B", "D", "F", "G", "L" };

var intersect = list1.Intersect(list2);

foreach (var i in intersect)
{
     Console.WriteLine(i);
}

输出将是;

F

这是DEMO

答案 2 :(得分:2)

尝试:

        List<string> list1 = new List<string> { "A", "C", "F", "H", "I" };
        List<string> list2 = new List<string> { "B", "D", "F", "G", "L" };
        String sel = list1.Intersect(list2).FirstOrDefault()??"";

        Console.WriteLine(sel);

试试我的Demo

答案 3 :(得分:0)

而不是bool变量您可以使用另一个列表变量,如:

List<string> list3变量以获取第二个列表中的forund项目列表并将结果分配给list3

 List<string> list3= list1.Intersect(list2).ToList();