Я хочу удалить элемент как из начала, так и из конца списка одновременно, если первый и последний элемент удовлетворяют условию.Рекурсивно удалять элемент из начала и конца списка в одно и то же время
У меня день имя класса, как показано ниже
public class Day
{
public String Name{get; set;}
public bool IsActive{get; set;}
}
У меня есть список , который содержит все дни. Теперь я хочу удалить элемент из начала, а также из конца, если начальный или конечный элемент в списке i.e Day заполняет это условие: Day.IsActive == true
.
Я хочу, чтобы извлекать элемент из списка и от начала и конца (чтобы сделать его более эффективным) в то же время, до тех пор пока в точке, где список не имеет элемент в начале и в конце, где Day.IsActive == true
Так случаи может быть
- активной неактивное неактивными-активный-активный
- активный-активный
- активной неактивное
- неактивны-неакт ив
Это то, что я придумал, что решает проблему, но есть лучший способ, что я могу сделать
public IList<Day> RemoveDays(IList<Day> days)
{
while (days.Count > 0 && (days.First().IsActive || days.Last().IsActive))
{
if(days.First().IsActive)
days.RemoveAt(0);
if (days.Count > 0 && days.Last().IsActive)
days.RemoveAt(days.Count - 1);
return RemoveDays(days);
}
return days;
}
Значит, вы хотите удалить все элементы IsActive == true? –
@ KosalaW не обязательно, следуя логике OP, она может быть «активной» - неактивной - активной - неактивной - активной ». который приведет к 'inactive - active - inactive' – Jonesopolis
@Jonesopolis: Ok Спасибо. Понял. Дай мне подумать. –