Улучшить код с кучей ветвлений - C#
Формулировка задачи:
Доброго времени суток!
Есть вариант написания подобной логики без огромного колличества Ifов и без мега switchей?
if (Stime > DateTime.MinValue || Etime < DateTime.MaxValue) { if (Stime > DateTime.MinValue) { tempA = tempA.Where(u => u.ecm_TimeLine.EventSTime >= Stime); tempB = tempB.Where(u => u.EventETime >= Stime && u.EventType < 4); } if (Etime < DateTime.MaxValue) { tempA = tempA.Where(u => u.ecm_TimeLine.EventSTime <= Etime); tempB = tempB.Where(u => u.EventETime <= Etime && u.EventType < 4); } else { tempA = tempA.Where(u => u.ecm_TimeLine.EventSTime <= DateTime.Now); tempB = tempB.Where(u => u.EventETime <= DateTime.Now && u.EventType < 4); } OnlyDeal = false; } if (EmployeeId > -1) { tempA = tempA.Where(u => u.ecm_TimeLine.EmployeeId_Input == EmployeeId); tempB = tempB.Where(u => u.EmployeeId_Input == EmployeeId && u.EventType < 4); OnlyDeal = false; } if (State == 1) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && u.ecm_TimeLine.EventType == 4); } else if (State == 2) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && u.ecm_TimeLine.EventType == 5); } else if (State == 3) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && (u.ecm_TimeLine.EventType == 4 || u.ecm_TimeLine.EventType == 5)); } else if (State == 4) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && u.ecm_TimeLine.EventType == 6); } else if (State == 5) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && (u.ecm_TimeLine.EventType == 4 || u.ecm_TimeLine.EventType == 6)); } else if (State == 6) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && (u.ecm_TimeLine.EventType == 5 || u.ecm_TimeLine.EventType == 6)); } else if (State == 7) { tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved); } if (HasNextContact == 1) { tempB = tempB.Where(u => u.EventSTime > DateTime.Now && u.EventState == 1 && u.EventType < 4); } else if (HasNextContact == 2) { tempB = tempB.Where(u => u.EventSTime <= DateTime.Now && u.EventType < 4); }
Решение задачи: «Улучшить код с кучей ветвлений»
textual
Листинг программы
Data.cs using System; namespace ConsoleApplication1 { public class TimeLine { public DateTime EventSTime { get; set; } public int EmployeeId_Input { get; set; } public bool IsRemoved { get; set; } public int EventType { get; set; } } public class Data { public TimeLine EcmTimeLine { get; set; } public DateTime EventETime { get; set; } public int EventType { get; set; } public int EmployeeId_Input { get; set; } public int EventState { get; set; } public DateTime EventSTime { get; set; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д