在我的控制器中,特别是创建操作..我希望其中一个文本框自动填充基于日期的最新记录中的值。
例如,如果在2016年5月2日我的车上行驶里程为26.3 ..那么当我想为5/3/2016
创建记录时,TextBox应为autopopulated
26.3。< / p>
这就是我所拥有的:
public ActionResult Create(int? id)
{
MaintenanceRecord newMaintenanceRecord = new MaintenanceRecord();
decimal oldMaintenanceRecord = db.MaintenanceRecords.Single(x => x.AircraftID == id && x.DateEntered == DateTime.Today.AddDays(-1)).AirFrame;
newMaintenanceRecord.DateEntered = DateTime.Today.Date;
newMaintenanceRecord.AirFrame = oldMaintenanceRecord;
ViewBag.AID = new SelectList(db.AInfoes, "ID", "RegNum");
return View(newMaintenanceRecord);
}
但是当我进入创建页面时,我收到了:
LINQ to Entities无法识别方法'System.DateTime AddDays(Double)'方法,并且此方法无法转换为商店表达式。
那么我需要修改什么才能根据日期检索数据库中最新的Airframe
?
感谢任何帮助。
答案 0 :(得分:2)
您可以使用以下内容:
DateTime yesterday=DateTime.Today.AddDays(-1);
decimal oldMaintenanceRecord = db.MaintenanceRecords
.Single(x => x.AircraftID == id &&
x.DateEntered == yesterday)
.AirFrame;
答案 1 :(得分:2)
更重要的是,为什么你认为最近的一天只有一天? &#34;最近&#34;只是DateTime
列中价值最大的那个,不是吗?
因此,只需按该值降序并获取第一条记录。像这样:
decimal oldMaintenanceRecord = db.MaintenanceRecords
.Where(x => x.AircraftID == id)
.OrderByDescending(x => x.DateEntered)
.First().AirFrame;