首先,我想知道第一个列表中是否至少有一个元素可以在第二个列表中找到。
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'
这样做的最佳方式是什么?
答案 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();