C# 两个集合相交

C# 两个集合相交,c#,collections,intersection,C#,Collections,Intersection,我正在尝试将两个集合交叉。我在下面的代码片段中列出了两个列表 这是我的输出: 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&g

我正在尝试将两个集合交叉。我在下面的代码片段中列出了两个列表

这是我的输出:

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();
//集合初始化
List list1=新列表{1,1,1,1};
List list2=新列表{1,1,1,1,1,1,1,1,1};
foreach(列表1中的int q)
控制台写入线(“列表1:+q”);
Console.WriteLine(“------------------------”;
foreach(列表2中的int q)
Console.WriteLine(“列表2:+q”);
Console.WriteLine(“------------------------”;
控制台写入线(“交叉点”);
IEnumerable both=list1.Intersect(list2);
foreach(两个中的int a)
控制台写入线(a);
Console.ReadLine();
Console.Clear();
使您的工作更轻松。使用
包含如下方法:

List<int> resultList = list1.Where(c => list2.Contains(c)).ToList();

正如您在以下说明中所看到的:

两组A和B的交集定义为 包含也出现在B中的A的所有元素,但不包含其他元素 元素

在图形中,只有不同的对象。因此,在一组中放入四个1与只放入一次相同。
这就是为什么您只能得到一个条目。

Intersect返回两个列表中唯一的匹配元素

这一条完全符合我的预期!是否可以执行相同的操作,但这次使用DateTime?
using System.Linq;