相关疑难解决方法(0)

合并重叠的时间间隔?

我有以下内容:

public class Interval
{
   DateTime Start;
   DateTime End; 
}
Run Code Online (Sandbox Code Playgroud)

我有一个List<Interval>包含多个间隔的对象.我正在努力实现以下目标(我使用数字使其易于理解):

[(1, 5), (2, 4), (3, 6)] --->  [(1,6)]
[(1, 3), (2, 4), (5, 8)] --->  [(1, 4), (5,8)]
Run Code Online (Sandbox Code Playgroud)

我目前在Python中这样做如下:

def merge(times):
    saved = list(times[0])
    for st, en in sorted([sorted(t) for t in times]):
        if st <= saved[1]:
            saved[1] = max(saved[1], en)
        else:
            yield tuple(saved)
            saved[0] = st
            saved[1] = en
    yield tuple(saved)
Run Code Online (Sandbox Code Playgroud)

但我试图在C#中实现相同的目标(LINQ将是最好的但是可选的).有关如何有效地做到这一点的任何建议?

c# linq

9
推荐指数
2
解决办法
5151
查看次数

标签 统计

c# ×1

linq ×1