【问题标题】:Get date range after date selection选择日期后获取日期范围
【发布时间】:2015-07-31 10:15:05
【问题描述】:

我有一个包含 4 列的数据库表(客户)

Name
Lastname
StartDate
StopDate

开始和停止日期可以持续几天,即

StartDate          StopDate

01.01.2015 00:00 - 01.01.2015 01:00 - Period is 1 hour
01.01.2015 00:00 - 01.05.2015 01:00 - Period is 4 days
01.01.2015 00:00 - 01.10.2015 01:00 - Period is 9 days

我有一个 ASP .Net 日历控件。当用户单击此日历上的日期时,我想以下列方式返回日期

如果选择01.01.2015,则将返回以上所有 3 条记录 如果选择02.01.2015,则仅返回最后两条记录(因为第一条记录现已过期) 如果选择03.01.2015,则仅返回最后两条记录(因为第一条记录现已过期) 如果选择06.01.2015,则只返回最后一条记录(因为前 2 条现已过期)

希望这有意义吗?

所以我尝试执行此操作导致使用 Linq to SQL 时出现一些混乱

Private IQueryable<Insurer> GetInsurers(DateTime UserSelectedDate)
{
    return db.Insurers(dt=> dt.StartDate >= UserSelectedDate && dt.StopDate <= UserSelectedDate)
}

我尝试了其他变体,包括互联网上的一些变体,但没有得到结果,这通常意味着我在这里遗漏了一些关键的东西(或者我已经筋疲力尽了)......有什么想法吗?

【问题讨论】:

  • 否 - 如果开始日期是 20.01.2015 并且用户选择了 01.01.2015,那么它将显示 20.1.2015 - 但它不应该 - 将其视为 Outlook 中的日历,其中包含一对持久的情侣天。您只会看到您输入的日期内的会议。

标签: c# asp.net linq linq-to-sql


【解决方案1】:

只需在查询中交换变量的位置。

private IQueryable<Insurer> GetInsurers(DateTime UserSelectedDate)
{
    return db.Insurers(dt=> UserSelectedDate >= dt.StartDate && UserSelectedDate <= dt.StopDate)
}

这意味着 UserSelectedDate 应该在开始日期之后或相同,并且应该在结束日期之前或结束日期结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多