我有一些数据库值存储休息的开始时间及其持续时间,但时间值存储为小数。举个例子
12.45 = 12:45 PM
12:59 = 12:45 PM
13.0 = 13:00 PM
持续时间存储为 int;30 = 30 分钟
在这里我必须检查特定时间是否在范围之间,所以我使用了 C# 和实体框架,并且我使用了以下代码,但它给出了一个错误,即 DateTime.Parse 无法被 LINQ 识别。
STAR_TIME 是存储为 12.45 的时间,DURATION 存储为 30,timeE 是日期时间类型
meal ml = HRM.meals.SingleOrDefault(p => p.SHIFTCODE == ShiftCode
&& DateTime.Parse(p.STAR_TIME.ToString().Replace(".", ":")) <= timE
&& DateTime.Parse(p.STAR_TIME.ToString().Replace(".", ":")).AddMinutes(int.Parse(p.DURATION.ToString())) >= timE
);
然后我没有转换,而是尝试乘以 60 并尝试比较如下值,但它的逻辑是错误的。这里使用 12.59 作为时间
meal ml = HRM.meals.SingleOrDefault(p => p.SHIFTCODE == ShiftCode
&& p.STAR_TIME*60 <= new Decimal(12.59)*60
&& p.STAR_TIME*60 + p.DURATION >= new Decimal(12.59) * 60
);
STAR_TIME -- 12.45 * 60 -- 747 持续时间 -- 30 结束时间 -- 747+ 30 = 777
但实际上结束时间应该是 13.15, 13.15 *60 -- 789
有人可以建议任何方法来解决这种情况吗?