我正在尝试计算时间相交的次数的最大值。在开始和结束时间列表中获取重叠时间的最大值
,我想从下面的代码示例需要应4.
共有8次是预期的结果,也有6个值,在总相交,一组4,和一组2.
我想得到的是交叉口的最大值,但不能让它工作。
这是现在的代码。
void Main()
{
var times = new List<Times> {
new Times
{
Start = DateTime.Now,
End = DateTime.Now.AddMinutes(10)
},
new Times
{
Start = DateTime.Now,
End = DateTime.Now.AddMinutes(10)
},
new Times
{
Start = DateTime.Now.AddMinutes(2),
End = DateTime.Now.AddMinutes(10)
},
new Times
{
Start = DateTime.Now.AddMinutes(15),
End = DateTime.Now.AddMinutes(35)
},
new Times
{
Start = DateTime.Now.AddMinutes(25),
End = DateTime.Now.AddMinutes(42)
},
new Times
{
Start = DateTime.Now.AddMinutes(43),
End = DateTime.Now.AddMinutes(50)
},
new Times
{
Start = DateTime.Now.AddMinutes(55),
End = DateTime.Now.AddMinutes(89)
},
new Times
{
Start = DateTime.Now.AddMinutes(2),
End = DateTime.Now.AddMinutes(12)
}
};
times.OrderBy(x => x.Start);
var overlappingEvents =
(
from e1 in times
where times
.Where(e2 => e1 != e2)
.Where(e2 => e1.Start <= e2.End)
.Where(e2 => e1.End >= e2.Start)
.Any()
select e1).ToList();
overlappingEvents.OrderBy(x => x.Start);
overlappingEvents.Distinct().OrderBy(x => x.Start);
overlappingEvents.Distinct().OrderBy(x => x.Start).Count();
}
public class Times
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
这是时代的输出对象
Start | End
05/04/2017 08:38:57 | 05/04/2017 08:48:57
05/04/2017 08:38:57 | 05/04/2017 08:48:57
05/04/2017 08:40:57 | 05/04/2017 08:48:57
05/04/2017 08:40:57 | 05/04/2017 08:50:57
05/04/2017 08:53:57 | 05/04/2017 09:13:57
05/04/2017 09:03:57 | 05/04/2017 09:20:57
05/04/2017 09:21:57 | 05/04/2017 09:28:57
05/04/2017 09:33:57 | 05/04/2017 10:07:57
This is the output of the overlapping object (I have added the line where the intersect stops)
Start | End
05/04/2017 08:38:57 | 05/04/2017 08:48:57
05/04/2017 08:38:57 | 05/04/2017 08:48:57
05/04/2017 08:40:57 | 05/04/2017 08:48:57
05/04/2017 08:40:57 | 05/04/2017 08:50:57
---------------------------------------
05/04/2017 08:53:57 | 05/04/2017 09:13:57
05/04/2017 09:03:57 | 05/04/2017 09:20:57
我会很感激,如果有人能帮助我得到的交点的最大值。
谢谢
完美!谢谢 –