void FindEqualsByData() { if (_list != null) { _list.Sort(new TimeRangeComparer()); _HwgrToWorld first = null, second = null; for (int i = 0; i < _list.Count; i++) { if (_list[i].IsDeleted) { continue; } if (first == null) { first = _list[i]; continue; } if (second == null) { second = _list[i]; if (first.IsEqualByData(second)) { second.BeginTime = first.BeginTime; first.Delete(); } first = second; second = null; } } } }
public void Execute() { LoadEntities(); if (_list.Count > 0) { _list.Sort(new TimeRangeComparer()); _HwgrToWorld newItem = new _HwgrToWorld(_entity); _HwgrToWorld currentItem = null; for (int i = 0; i < _list.Count; i++) { currentItem = _list[i]; if (currentItem.IsIntersectRanges(newItem)) { if (currentItem.IsIncludeRange(newItem)) { _HwgrToWorld n = currentItem.CreateCopy(); currentItem.EndTime = newItem.BeginTime.AddDays(-1); n.BeginTime = newItem.EndTime.AddDays(1); if (!currentItem.IsValid) { currentItem.Delete(); } _list.Add(newItem); if (n.IsValid) { _list.Add(n); } break; } else { currentItem.EndTime = newItem.BeginTime.AddDays(-1); if (currentItem.IsValid) { currentItem.Delete(); } for (int j = i + 1; j < _list.Count; j++) { currentItem = _list[j]; if (currentItem.IsIncludeDate(newItem.EndTime)) { currentItem.BeginTime = newItem.EndTime.AddDays(1); if (currentItem.IsValid) { currentItem.Delete(); } } else { currentItem.Delete(); } } _list.Add(newItem); break; } } } FindEqualsByData(); InsertOrUpdateOrDelete(); } }