2015-11-20 23 views
0

我使用功能NHibernate 我想從表中加載一些記錄:如何只加載排名前100位的記錄,但不加載所有

public IQueryable<T> Load() 
    { 
     return Session.Query<T>(); 
    } 
    public IQueryable<T> Load(Expression<System.Func<T, bool>> expression) 
    { 
     return Load().Where(expression); 
    } 

用法:

var list = repository.Load(a=> a.Id > 1000); 

的情況下,巨大的表格數量也是巨大的,但我不會只有第一(上)100(例如)的記錄。

var list = repository.Load(a=> a.Id > 1000).Take(100); 

問題:誰(使用我ID表達),但不能加載所有記錄加載前100條記錄(1100之後)?

+0

不知道如果我得到這個問題..爲什麼'.Take(100)'不工作? –

+0

@RadimKöhler根據時間觀察,兩種用法同時給出 –

+0

是什麼產生的sql?我以前從來沒有在使用nhibernate的linq查詢中使用Take()時遇到問題。 – Fran

回答

0

我覺得你自己已經給出了答案,這是

VAR列表= repository.Load(A => a.Id> 1000)。取(100);

拿(100)完全可以滿足您的需求。如果您的要求是其他內容,請更清晰地指定。

相關問題