0

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

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

4 回答 4

4

你只使用Intersect

var result = list1.Intersect(list2);
于 2013-06-07T10:50:59.833 回答
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.

于 2013-06-07T10:56:00.210 回答
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);

试试我的演示

于 2013-06-07T11:00:22.790 回答
1

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

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

 List<string> list3= list1.Intersect(list2).ToList();
于 2013-06-07T10:54:38.967 回答