给定一个DateTime,当使用LINQ来NHibernate时,如何调用.tuniveraltime
本文关键字:NHibernate tuniveraltime LINQ 何调用 调用 一个 DateTime | 更新日期: 2023-09-27 18:18:16
我有一个方法,返回基于EventTypeID的所有事件:
public IList<Event> FindAll(int eventTypeId, DateTime? modifiedSince)
{
IQueryable<Event> query = this.SessionFactory.Session.Query<Event>().Where(e => e.EventType.Id == eventTypeId);
if (modifiedSince.HasValue)
{
// .ToUniversalTime() call throws NotSupportedException
query = query.Where(et => et.ModifiedDate.ToUniversalTime() >= modifiedSince.Value);
}
return query.ToList();
}
如何为上面所示的每条记录调用。tuniversaltime()方法?
理想情况下,我不想先调用。tolist(),然后再调用filter.
如果它根本不被支持,我如何将LINQ扩展到NHibernate来支持这个特定的特性?
这可能有点难以解决,因为我希望您正在检索的数据行包含不同时区的时间。
出现此问题是因为您的et.ModifiedDate.ToUniversalTime()调用在查询中传递,而查询的目标不支持该操作(这就是为什么您在运行时而不是编译时看到此操作)。
为了避免这种情况,通常在查询块之外执行所需的计算并传入该值。
您必须考虑另一种方法来执行您的测试。