两个集合交集
问题描述:
我想交集两个集合。我在代码片段中列出了两个列表。两个集合交集
这是我的输出:
Intersection
1
为什么只有一个价值发现的?这是预期的行为还是我做错了什么?
我希望我的输出是这样的:
Intersection
1
1
1
1
我的代码:
// Collection initialization
List<int> list1 = new List<int> { 1,1,1,1 };
List<int> list2 = new List<int> { 1,1,1,1,1,1,1,1,1,1,1 };
foreach (int q in list1)
Console.WriteLine("list1: " + q);
Console.WriteLine("------------------");
foreach (int q in list2)
Console.WriteLine("list2: " + q);
Console.WriteLine("------------------");
Console.WriteLine("Intersection");
IEnumerable<int> both = list1.Intersect(list2);
foreach (int a in both)
Console.WriteLine(a);
Console.ReadLine();
Console.Clear();
答
LINQ让您的工作更加容易。使用Contains
方法是这样的:
List<int> resultList = list1.Where(c => list2.Contains(c)).ToList();
只是不要忘了LINQ第一添加到您的使用指令:
using System.Linq;
答
正如你可以在Enumerable.Intersect说明写着:
两个集合A和B的交集定义为 包含也出现在B中的A的所有元素,但不包含其他元素。
在set中,您只有不同的对象。所以把四个1放在一个集合中就像只放一个一样。 这就是为什么你只有一个条目。
答
相交返回唯一匹配的元素在这两个列表
这一个工作完全如我所料!是否有可能做同样的行动,但这次与DateTime? –