c# - LINQ 查询中两个日期之间的日期范围

标签 c# linq sql-server-2008

我正在尝试编写一个选择查询,该查询返回输入日期范围介于 LINQ 查询中的两个日期字段之间的记录。

我的输入是:

  • date1 - 开始日期
  • date2 - 结束日期

我的数据库字段是

  • 约会开始
  • 约会结束

此外,我还想确保 14:00 - 15:00 的输入不会返回 15:00-16:00 的值。

return (from t1 in db.Appointments where (t1.AppointmentStart <= date2 && (t1.AppointmentEnd) >= date1)

如果有人可以帮助我,我将不胜感激。

最佳答案

我不是 100% 清楚您的要求。在您的开头行中,您要求输入“输入日期范围介于两个日期字段之间”的记录,但在“另外”行中,您暗示您不想返回约会开始日期不相等的记录输入的结束日期。我认为这是两个不同的要求,所以我会给你两个不同的问题。

第一个查询是:

    from t1 in db.Appointments
    where date1 >= t1.AppointmentStart
    where date2 <= t1.AppointmentEnd
    select t1;

第二个查询是:

    from t1 in db.Appointments
    where date2 > t1.AppointmentStart
    where date1 < t1.AppointmentEnd
    select t1;

第一个查询返回“包含”输入日期的记录。

第二个查询返回与输入日期“重叠”的记录。

我认为您想要重叠查询更有意义,并且这个查询将满足您的“14:00 - 15:00 不返回 15:00-16:00 的值”要求。

如果我在理解您的要求时出错并需要进行任何更改,请告诉我。

关于c# - LINQ 查询中两个日期之间的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815235/

相关文章:

sql-server - SQL Server 2008 : Backing up database before running stored procedure

c# - 服务结构错误

c# - 通过套接字发送不同类型的消息

c# - 使用 Linq 获取 parent 曾孙的 "lowest"日期

c# - 使用 linq 更新列表中的列表

sql - 区分ß和ss的SQL查询

c# - 在 Asp.Net WebForm 中压缩 JavaScript 和 CSS

c# - 在 NHibernate 中设置超时过期

c# - 带有子查询的 Linq 查询

sql-server - 无法远程访问 SQL Server 2008 R2 实例