[英]using nhibernate, how would i construct a query that wants the most recent 50 rows
我有一個名為orders的表,我有一個名為Last Update的列(以及一個具有LastUpdate屬性的訂單對象)。 我想使用nhibernate構造一個查詢來獲取最后50行,所以我不去數據庫並獲取所有內容,然后必須在我的應用程序中過濾結果。
這是否可能在nhibernate。 我正在嘗試使用LINQ api
如果您使用的是Criteria,則使用SetMaxResults(50)並對日期時間進行降序排序。
這是此查詢的LINQ版本。
var orders = session.Query<Order>()
.OrderByDescending(x => x.LastUpdate)
.Take(50);
這是代碼示例的屏幕截圖...
這是NHibernate Profiler拍攝的屏幕截圖...
你可以使用SetMaxResults(50)
,雖然取決於你想要的50行(最新?第一?最后?),你可能也需要做一個SortBy表達式。
var orders = session.Query<Linq>()
.OrderByDescending(x => x.LastUpdate)
.Take(50);
一般情況下,使用Linq2SQL建議LastUdate
可以為空,您可以將擴展方法寫入您的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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.