休憩の開始時刻とその期間を格納するデータベース値がいくつかありますが、Time値はDecimalsとして格納されています。たとえば
12.45 = 12:45 PM
12:59 = 12:45 PM
13.0 = 13:00 PM
期間はintとして保存されます。30=30分
ここでは、特定の時間が範囲内にあるかどうかを確認する必要があるため、C#とEntity Frameworkを使用し、次のコードを使用しましたが、DateTime.ParseをLINQで識別できないというエラーが発生します。
STAR_TIMEは12.45として保存され、DURATIONは30として保存され、timEは日時タイプです。
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 DURATION-30 END TIME-747+ 30 = 777
ただし、実際の終了時間は13.15、13.15*60-789である必要があります
誰かがこの状況に取り組むための方法を提案できますか?