私は次のものを持っています:
public class Interval
{
DateTime Start;
DateTime End;
}
List<Interval>
複数の間隔を含むオブジェクトがあります。私は次のことを達成しようとしています(理解しやすいように数字を使用しました):
[(1, 5), (2, 4), (3, 6)] ---> [(1,6)]
[(1, 3), (2, 4), (5, 8)] ---> [(1, 4), (5,8)]
私は現在、次のように 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)
しかし、C#で同じことを達成しようとしています(LINQが最適ですがオプションです)。これを効率的に行う方法について何か提案はありますか?