使用nHibernate查询今天的日期是在publishDate和到期日期之间 [英] Querying with nHibernate where todays date is between publishDate and Expiry date

查看:513
本文介绍了使用nHibernate查询今天的日期是在publishDate和到期日期之间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出如何在NHibernate中最好地查询,以便返回的结果位于今天的时间=> = PublishDateTime和< = ExpiryDateTime

的条目之间。

到期日期可以为null,所以我需要允许。我发现了几个例子: here 这里,但它们似乎以不同的方式工作,并接受2个值并与一个DB字段进行比较。



查询到目前为止:

  var query = _session.CreateCriteria< Message>()
.AddOrder(Order.Desc(PublishedDateTime))
.List< Message>();
返回查询;

任何建议将被大大的收获!

解决方案

Easiest Linq查询:

  return _session.Query< Message>()
.Where(m => DateTime.Today> = m.PublishDateTime&&
(m.ExpiryDateTime == null ||
DateTime.Now< = m.ExpiryDateTime)
.OrderByDescending(m => m.PublishDateTime)
.ToList();

标准:

  return _session.CreateCriteria< Message>()
.Add(Restrictions.Le(\"DownDateTime ,DateTime.Today)&
(Restrictions.IsNull(ExpiryDateTime)|
限制.Ge(ExpiryDateTime,
DateTime.Now)))
.AddOrder (Order.De sc(PublishedDateTime))
.List< Message>();


I am trying to figure out how to best query in NHibernate so that the returned results are between for entries where todays time is >= PublishDateTime and <=ExpiryDateTime

The expiry date can be null so I need to allow for that. I found a couple of examples here and here but they seem to work in a different way and accept 2 values and compare to one DB field. I want the other way wrong really.

Query so far:

var query = _session.CreateCriteria<Message>()
                .AddOrder(Order.Desc("PublishedDateTime"))
                .List<Message>();
                return query;

Any suggestions would be greatly received!

解决方案

Easiest Linq query:

return _session.Query<Message>()
               .Where(m => DateTime.Today >= m.PublishDateTime &&
                          (m.ExpiryDateTime == null ||
                           DateTime.Now <= m.ExpiryDateTime)
               .OrderByDescending(m => m.PublishDateTime)
               .ToList();

Criteria:

return _session.CreateCriteria<Message>()
               .Add(Restrictions.Le("PublishedDateTime", DateTime.Today) & 
                                    (Restrictions.IsNull("ExpiryDateTime") |
                                     Restrictions.Ge("ExpiryDateTime",
                                                     DateTime.Now)))
               .AddOrder(Order.Desc("PublishedDateTime"))
               .List<Message>();

这篇关于使用nHibernate查询今天的日期是在publishDate和到期日期之间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆