我有一个需要 ac# 解决方案的问题,这个问题对于一个简单的解决方案来说变得太复杂了。
我有两个时间范围列表以及每个范围的值: ListA; 清单 B。他们之间没有任何关系。
我想基于 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")