我有一个名为orders的表,我有一个名为Last Update的列(以及一个具有LastUpdate属性的订单对象)。我想使用nhibernate构造一个查询以获取最后50行,这样我就不会去数据库并获取所有内容,然后必须在我的应用程序中过滤结果。
这在nhibernate中是可能的。我正在尝试使用LINQ api
答案 0 :(得分:4)
如果您使用的是Criteria,请使用SetMaxResults(50)并对日期时间进行降序排序。
答案 1 :(得分:4)
这是此查询的LINQ版本。
var orders = session.Query<Order>()
.OrderByDescending(x => x.LastUpdate)
.Take(50);
以下是代码示例的屏幕截图...
以下是NHibernate Profiler的屏幕截图...
答案 2 :(得分:1)
你可以使用SetMaxResults(50)
,虽然取决于你想要的50行(最新?最后?最后?)你也可能还需要做一个SortBy表达式。
答案 3 :(得分:1)
var orders = session.Query<Linq>()
.OrderByDescending(x => x.LastUpdate)
.Take(50);
答案 4 :(得分:1)
一般情况下,建议LastUdate
可以使用Linq2SQL为空,您可以将扩展方法写入您的IQueriable:
public static partial class FooTable
{
public static IQueryable<FooTable> LastUpdated(this IQueryable<FooTable> queryable, int count)
{
return queryable.Where(x => (x.LastUdate != null))
.OrderByDescending(x => x.LastUdate)
.Take(count);
}
}