这是我的数据库,其中列出了菜单的5个结果,
我想要的是,如果日期不等于当前日期(DateTime.Now
),则结果将为零,如下所示:
这是我要执行的操作的代码,
for (int i = 1; i <= DateTime.Now.ToShortDateString().Length; i++)
if (list.Any(x => x.Date.ToShortDateString() == i.ToString() ))
{
list.ToList().Add(new MenuModel
{
Total = list.First(x => x.Date.ToShortDateString() == i.ToString()).Total,
Location = list.First(x => x.Date.ToShortDateString() == i.ToString()).Location,
});
}
else
{
list.Add(new MenuModel
{
Total = list.First(x => x.Date.ToShortDateString() != i.ToString()).Total=0,
Location = list.First(x => x.Date.ToShortDateString() != i.ToString()).Location,
});
}
但是我得到的结果是这样,
位置,未显示实际值,它将是A,B,C,D和E。如何获取位置的确切值?
您真正需要的是一点linq
魔法。下面的linq根据当前日期获取Total
为实际值,如果不是当前日期,则将其设置为0。
DateTime date = DateTime.Today;
var menus = list.Select(l => new MenuModel
{
Total = l.Date.Date == date ? l.Total : 0,
Location = l.Location,
});