使用nHibernate查询今天日期在publishDate和到期日期之间的位置

使用nHibernate查询今天日期在publishDate和到期日期之间的位置,nhibernate,date,date-range,nhibernate-criteria,Nhibernate,Date,Date Range,Nhibernate Criteria,我试图找出如何在NHibernate中进行最佳查询,以便返回的结果介于今天时间>=PublishDateTime和最简单的Linq查询之间: return _session.Query<Message>() .Where(m => DateTime.Today >= m.PublishDateTime && (m.ExpiryDateTime == null ||

我试图找出如何在NHibernate中进行最佳查询,以便返回的结果介于今天时间>=PublishDateTime和最简单的Linq查询之间:

return _session.Query<Message>()
               .Where(m => DateTime.Today >= m.PublishDateTime &&
                          (m.ExpiryDateTime == null ||
                           DateTime.Now <= m.ExpiryDateTime)
               .OrderByDescending(m => m.PublishDateTime)
               .ToList();
return\u session.Query()
.Where(m=>DateTime.Today>=m.PublishDateTime&&
(m.ExpiryDateTime==null||
DateTime.Now m.PublishDateTime)
.ToList();
标准:

return _session.CreateCriteria<Message>()
               .Add(Restrictions.Le("PublishedDateTime", DateTime.Today) & 
                                    (Restrictions.IsNull("ExpiryDateTime") |
                                     Restrictions.Ge("ExpiryDateTime",
                                                     DateTime.Now)))
               .AddOrder(Order.Desc("PublishedDateTime"))
               .List<Message>();
return\u session.CreateCriteria()
.Add(Restrictions.Le(“PublishedDateTime”,DateTime.Today)和
(限制。IsNull(“ExpiryDateTime”)|
限制。Ge(“ExpiryDateTime”,
DateTime.Now)
.AddOrder(Order.Desc(“PublishedDateTime”))
.List();
在c#中:

var formato=“dd/MM/yyyy h:MM:ss”;
var sDesde=DateTime.Now.ToString(“dd/MM/yyyy”)+“0:00:00”;
var sHasta=DateTime.Now.ToString(“dd/MM/yyyyy h:MM:ss”);
Viaje vDesde=new-Viaje{Viajefecha=DateTime.ParseExact(sDesde,formato,null)};
Viaje vHasta=new-Viaje{Viajefecha=DateTime.ParseExact(sHasta,formato,null)};
StringWriter strWriter=新StringWriter();
var resultado=cp.sesion.CreateCriteria().Add(Expression.Between(“Viajefecha”,vDesde.Viajefecha,vHasta.Viajefecha)).AddOrder(Order.Asc(“Viajefecha”)).List();

+1感谢您给出这两个示例。Linq我是新的,但对Criteria方法感兴趣,所以谢谢您帮我一个忙。请更改。今天到。现在,我将标记您作为答案。再次感谢您的输入:)我以为您想要的是“今天的日期”,而不是“当前时间”(问题是这样说的)抱歉,我的意思是日期时间-我的措辞有误,但字段上的措辞正确-现在将更新-再次感谢您的帮助作为冈比亚人,vai por mim!
return _session.CreateCriteria<Message>()
               .Add(Restrictions.Le("PublishedDateTime", DateTime.Today) & 
                                    (Restrictions.IsNull("ExpiryDateTime") |
                                     Restrictions.Ge("ExpiryDateTime",
                                                     DateTime.Now)))
               .AddOrder(Order.Desc("PublishedDateTime"))
               .List<Message>();
          var formato = "dd/MM/yyyy h:mm:ss";
            var sDesde = DateTime.Now.ToString("dd/MM/yyyy") + " 0:00:00";
            var sHasta = DateTime.Now.ToString("dd/MM/yyyy h:mm:ss");

            Viaje vDesde = new Viaje { Viajefecha = DateTime.ParseExact(sDesde, formato , null) };
            Viaje vHasta = new Viaje { Viajefecha = DateTime.ParseExact(sHasta, formato, null) };

            StringWriter strWriter = new StringWriter();
            var resultado = cp.sesion.CreateCriteria<Viaje>().Add(Expression.Between("Viajefecha", vDesde.Viajefecha, vHasta.Viajefecha)).AddOrder(Order.Asc("Viajefecha")).List<Viaje>();