left-closed日期间隔意外,查询使用NHIBERNATE

时间:2016-01-27 06:44:52

标签: c# wpf nhibernate nhibernate-criteria

我在DAL类中有一个方法:

public IList<HouseHold> FindByDate(DateTime start, DateTime end)
{
    using (ISession session = NHibernateHelper.AbreSession())
    {
        return session.CreateCriteria<HouseHold>()
            .Add(Expression.Between("RegistrationDate", start, end))
            .List<HouseHold>();
    }
}

有了这个,我希望从关闭间隔之间的日期获取数据。但是当我使用这种方法时,结果是一个左闭的间隔,如下所示:

private IList<HouseHold> LoadData()
{
    hh = dao.FindByDate(start.SelectedDate.Value, end.SelectedDate.Value);
    return hh;
}

我选择2015年8月20日至2015年8月22日期间DataPicker(WPF)的日期,显示20至21的结果。但是当我选择日期20/08/2015和23/08时/ 2015它显示20到22的结果,而我知道这是23的结果!

出了什么问题?

1 个答案:

答案 0 :(得分:1)

似乎我们必须将早晨时间转换为午夜时间。来自 23/08/2015 00:00 - 我们需要23/08/2015 23:59

最简单的方法就是添加一天

.Add(Expression.Between("RegistrationDate", start, end.AddDay(1)))