Следующий код работает, чтобы показать людям, у которых есть праздники с иконкой в моем календаре, но проблема у меня есть первая строка кода в моей инструкции for, где я извлекаю датуОбъект за пределами установленного списка
protected void apertureAppointments_TimeSlotCreated(object sender, TimeSlotCreatedEventArgs e)
int i = 0;
bool isFound = false;
List<tblApertureNetShiftPattern> _list = new List<tblApertureNetShiftPattern>();
_list = _dal.getHolidays();
List<Resource> resources = new List<Resource>(apertureAppointments.Resources.GetResourcesByType("Managers"));
Resource res = resources[5];
foreach (tblApertureNetShiftPattern sp in _list)
{
if (_list.Count >= 1)
i++;
else
i = 0;
DateTime? dt1 = _list[i - 1].startdate;
DateTime? dt2 = _list[i - 1].endDate;
if (e.TimeSlot.Start == dt1 && e.TimeSlot.Resource.Text == sp.manager_name)
{
isFound = true;
if (DoDateRangesOverlap(e.TimeSlot.Start, e.TimeSlot.End, dt1, dt2) && isFound == true)
{
Label temperatureLabel = new Label();
if (sp.appointmentType == Constants.shiftDayoff)
{
e.TimeSlot.CssClass = "DayOfCssStyle";
temperatureLabel.CssClass = "DayOfCssStyle";
}
else if (sp.appointmentType == Constants.shiftHoliday)
{
e.TimeSlot.CssClass = "HolidayCssStyle";
temperatureLabel.CssClass = "HolidayCssStyle";
}
else if (sp.appointmentType == Constants.shiftStat)
{
e.TimeSlot.CssClass = "statCssStyle";
temperatureLabel.CssClass = "statCssStyle";
}
else if (sp.appointmentType == Constants.shiftsickDay)
{
e.TimeSlot.CssClass = "SickDayStyle";
temperatureLabel.CssClass = "SickDayStyle";
}
temperatureLabel.Text = sp.Description;
Image imageControl = new Image();
imageControl.ImageUrl = @"~\images\aperturenet\Calendar\resources\holidays.png";
temperatureLabel.BackColor = System.Drawing.Color.Orange;
dt1 = null;
dt2 = null;
isFound = false;
e.TimeSlot.Control.Controls.AddAt(1, temperatureLabel);
e.TimeSlot.Control.Controls.AddAt(2, imageControl);
}
}
}
Моя проблема заключается в этом коде здесь
if (_list.Count >= 1) i++; else i = 0; DateTime? dt1 = _list[i - 1].startdate; DateTime? dt2 = _list[i - 1].endDate;
Когда у меня нет -1 в [массив междунар] это бомбы, потому что OBV список показывает 0,1 и петля pr obally показывает 2 предмета. Каков наилучший способ избежать ошибки индекса вне диапазона?
Getholidays - это простой список того, когда наш член должен быть таким, чтобы ничто не представляло здесь.
Также их более простой способ сделать так, чтобы я чувствовал, что мой код очень раздутый.
Я бы также переместил всю вещь if/elseif в словарь, а затем сразу же получил доступ к ней. Он содержит повторяющийся код –