如何从2016年开始?
问题描述:
下面我有,因为它给了我一个错误Invalid cast from 'Boolean' to 'DateTime'.
和我添加的代码是一个布尔如何从2016年开始?
var per = (from p in db.Periods select new { periodId = p.PeriodId, periodStart = p.StartDate, periodEnd = p.EndDate, payrollEndDate = p.PayrollEndDate.Value.Year >= 2016 });
var periods = (from p in per.AsEnumerable() select new { perId = p.periodId, PayrollEndDate = Convert.ToDateTime(p.payrollEndDate).ToShortDateString() }).AsQueryable();
ViewBag.PeriodEndDate = new SelectList(periods, "PayrollEndDate", "PayrollEndDate", null);
2016年起如何利用返回线路payrollEndDate = p.PayrollEndDate.Value.Year >= 2016
瓦特/做工精细Ø条件这段代码?
答
select
是投影,而不是过滤。这听起来像你想要一个where
子句来代替。我建议不使用查询表达式在这里,因为你只是在做简单的事情:
var query = db.Periods
.Where(p => p.PayrollEndDate != null &&
p.PayrollEndDate.Value.Year >= 2016)
.AsEnumerable()
.Select(p => new {
p.PeriodId,
PayrollEndDate = p.PayrollEndDate.Value.ToShortDateString()
});
(我强烈怀疑你实际上并不希望AsQueryable()
通话有...这可能会给印象
因为我假设p.PayrollEndDate.Value
我已经删除了Convert.ToDateTime
呼叫任何进一步的查询将在数据库中进行,但这是一种错觉,因为你已经有了AsEnumerable()
了。)已经是一个DateTime
。
会尝试它... –
感谢像魔术般的作品。 –
如何按顺序排序?对不起,我不知道如何使用lambda –