使用nHibernate查询今天的日期是在publishDate和到期日期之间 [英] Querying with nHibernate where todays date is between publishDate and Expiry date
本文介绍了使用nHibernate查询今天的日期是在publishDate和到期日期之间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
到期日期可以为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屋!
查看全文