我有一个需要c#解决方案的问题,对于简单的解决方案,问题变得过于复杂。如何根据两个时间范围列表中的交叉点创建时间范围列表?
我有两个时间范围列表加上每个范围的值:ListA;数组listB。他们之间没有任何关系。
我想根据ListB创建第三个列表(ListC),对于ListB中的每个开始和结束对,如果范围在ListA中的任何时间范围内都不作为整体存在,则创建两个或更多个条目在ListC中,以便新条目由ListA中的条目覆盖。 (对不起,很难解释而不是太冗长)
一个简单的例子,其中包含一种重叠。这两个列表之间可能有各种重叠。
List<Tuple<int, DateTime, DateTime>> listA = new List<Tuple<int, DateTime, DateTime>>();
listA.Add(new Tuple<int, DateTime, DateTime>(22,DateTime.Parse("09/01/2013 11:00"),DateTime.Parse("09/01/2013 12:00")));
listA.Add(new Tuple<int, DateTime, DateTime>(66, DateTime.Parse("09/01/2013 12:01"), DateTime.Parse("09/01/2013 14:00")));
List<Tuple<int, DateTime, DateTime>> listB = new List<Tuple<int, DateTime, DateTime>>();
listB.Add(new Tuple<int, DateTime, DateTime>(33, DateTime.Parse("09/01/2013 11:30"), DateTime.Parse("09/01/2013 13:30")));
//Desired List
List<Tuple<int, DateTime, DateTime>> listC = new List<Tuple<int, DateTime, DateTime>>();
//listC should contain 2 tuples: first tuple contains the segment from ListB which falls in the first ListA tuple: Tuple(33, "09/01/2013 11:30","09/01/2013 12:00")
//second tuple contains the segment which falls in second ListA tuple: Tuple(33, "09/01/2013 12:01","09/01/2013 13:30")