【发布时间】:2017-11-08 15:11:38
【问题描述】:
我有一个记录患者日程的日程表。我想检索当前(今天的日程安排)、上一个日程安排(上次安排的时间)和下一个日程安排。 Schedule 表的结构是这样的
时间表
Id uniqueindentifier
PatientId uniqueindentifier
Start datetime
End datetime
Remarks varchar
当前、上一个和下一个将基于开始列。开始日期可以是任意日期(不连续)。
我的做法:
db.DbContext.Schedules.Where(i => DbFunctions.TruncateTime(i.Start) == today && i.PatientId==patientId).Take(1)
.Union(ctx.DbContext.Schedules.Where(i => DbFunctions.TruncateTime(i.Start) < today && i.PatientId == patientId).OrderByDescending(d => d.Start).Take(1))
.Union(ctx.DbContext.Schedules.Where(i => DbFunctions.TruncateTime(i.Start) > today && i.PatientId == patientId).OrderBy(d => d.Start).Take(1))
我想知道它是否有效或有更好的选择。
【问题讨论】:
-
你用的是什么ORM?
-
实体框架6.0
-
您为什么想知道是否有更好的选择?你有问题吗?不要陷入Premature Optimization。
标签: c# sql-server linq entity-framework-6