gpt4 book ai didi

c# - 使用 LINQ 检查计划重叠

转载 作者:太空狗 更新时间:2023-10-30 01:32:30 27 4
gpt4 key购买 nike

我有如下表格

SL  Classroom  Weekday  StartTime  EndTime
-- --------- ------- --------- --------
1 ADMN-100 Friday 01:00:00 02:00:00
2 ADMN-100 Friday 02:00:00 03:00:00
3 ADMN-100 Monday 01:00:00 02:00:00
4 LAB-501 Monday 01:00:00 02:00:00

如何使用 LINQ 检查是否发生时间重叠?

我在下面做的失败了,

bool check = true;
check = db.Classrooms.Any(x => x.Classroom.Equals(roomNo)
&& x.Weekday.Equals(weekDay)
&& x.StartTime < startsAt
&& x.EndTime > startsAt);

最佳答案

您的代码几乎是正确的,但要更改 x.StartTime < startsAtx.StartTime < endsAt . Schedule为了完整性,类在下面。

class Schedule
{
public string Classroom { get; set; }
public string Weekday { get; set; }
public TimeSpan StartTime { get; set; }
public TimeSpan EndTime { get; set; }

public bool OverlapsWith(Schedule schedule)
{
return schedule.StartTime < EndTime &&
schedule.EndTime > StartTime &&
schedule.Weekday == Weekday &&
schedule.Classroom == Classroom;
}
}

快速说明 - 使用 TimeSpan这样一个 DateTime如果月、年或日关闭,对象不会扰乱您的逻辑。 What you really want is a time of day , 和 TimeSpan提供您真正想要的“小时”、“分钟”和“秒”。比较将适用于 TimeSpan对象。不过,我不确定这将如何与 EF 一起使用。

如果你需要一个字符串到TimeSpan转换,试试 TimeSpan.Parse .它应该适用于您在问题中提供的格式。

OverlapsWith方法可能不会在 Schedule 中,但它只是为了向您展示您的代码基本相同。

关于c# - 使用 LINQ 检查计划重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com