相关文章推荐
纯真的核桃  ·  Therapy options for ...·  1 年前    · 
冷冷的电梯  ·  2023 ...·  3 年前    · 

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

5 人关注

我想写一个选择查询,在LINQ查询中返回输入日期范围在两个日期字段之间的记录。

我的投入是。

  • date1 - 开始日期
  • date2 - 结束日期
  • 我的数据库字段是

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

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

    如果有人能在这方面帮助我,我将不胜感激。

    1 个评论
    你的说法到底有什么问题。对我来说,看起来不错。
    c#
    linq
    sql-server-2008
    Nick
    Nick
    发布于 2011-10-19
    2 个回答
    Enigmativity
    Enigmativity
    发布于 2011-10-19
    0 人赞同

    我不是很清楚你的要求。在你的开场白中,你要求获得 "输入的日期范围在两个日期字段之间 "的记录,但在 "另外 "一行中,你暗示你不希望返回约会的开始日期不等于你输入的结束日期的记录。我认为这是两个不同的要求,所以我给你两个不同的查询。

    第一个查询是。

     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的值 "的要求。

    如果我对你的要求理解有误,需要做任何修改,请告诉我。

    同意,第二个查询是优越的。第一个查询将省略开始/结束于指定日期范围之外的多日约会。也许对于 "约会 "来说不太可能,因为它通常是基于时间而不是基于天的,但对于其他跨越多天的日历条目类型来说,这是必不可少的。
    Gary.S
    Gary.S
    发布于 2011-10-19
    已采纳
    0 人赞同

    在我看来,这是在倒退。

    如果以下情况为真。

    Date1 = 开始