清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
/// <summary>
/// 截取时间范围内的时间段
/// </summary>
public static List<SJDuan> GetBetween(this SortedList<DateTime, SJDuan> duans, DateTime begin, DateTime end)
{
DebugHelper.Start("GetBetween"); // 用于时间统计
var rslt = new List<SJDuan>();
if (end > begin)
{
var first = duans.Keys.GetFirstIndexBefore(begin);
if (first == null)
{
first = 0;
}
var last = duans.Keys.GetFirstIndexAfter(end);
if (last == null)
{
last = duans.Count - 1;
}
else
{
last = last - 1;
}
for (int i = first.Value; i <= last; i++)
{
var duan = duans.Values[i];
if (duan.end > begin && duan.begin < end)
{
var dbegin = duan.begin > begin ? duan.begin : begin;
var dend = duan.end < end ? duan.end : end;
rslt.Add(new SJDuan(dbegin, dend));
}
}
}
DebugHelper.Stop("GetBetween");
return rslt;
}