我有以下型号
public class DailyRoutine
{
public int Id { get; set; }
public DateTime Date { get; set; }
public string Description { get; set; }
}
情境: 何时在初始时创建5条记录,这意味着每天输入5个条目。举个例子2017年5月1日到5月5日。描述有任何字符串。
用户可以在中间添加新记录,以便将以下记录移动并更改为下一天。
预期输出 例如,用户可以在输入和提交中给出日期和描述。如果输入日期为< 5/3/2017' (5月3日),应该在5月2日之后添加条目并将现有的5月3日记录更改为5月4日,5月4日到5月5日等。所以输出就像是5月1日到5月6日,并且给定的输入在5月更新3。
请帮助我解决这个问题,而不是降低性能
答案 0 :(得分:2)
这种方法可行:
List<DailyRoutine> d = new List<DailyRoutine>()
{
new DailyRoutine() { Date = new DateTime(2017, 7, 1)},
new DailyRoutine() { Date = new DateTime(2017, 7, 2)},
new DailyRoutine() { Date = new DateTime(2017, 7, 3)},
new DailyRoutine() { Date = new DateTime(2017, 7, 4)},
new DailyRoutine() { Date = new DateTime(2017, 7, 5)}
};
DailyRoutine newDr = new DailyRoutine() { Date = new DateTime(2017, 7, 2) };
DailyRoutine oldDr = d.Where(dr => dr.Date == newDr.Date).FirstOrDefault();
if (oldDr != null)
{
int idx = d.IndexOf(oldDr);
List<DailyRoutine> changeList = d.Where((dr, i) => i >= idx).ToList();
foreach (DailyRoutine i in changeList)
{
i.Date = i.Date.AddDays(1);
}
d.Insert((int)idx, newDr);
}
else
{
d.Add(newDr);
}