簡體   English   中英

使用nhibernate,我將如何構造一個想要最近50行的查詢

[英]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拍攝的屏幕截圖...

NHibernate探查器示例

你可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM