2009-04-23 9 views
2

私のアプリケーションのユーザーのトップ10の得点を得ようとしています。私は通常、改行の目的で通常使用されている行の何かを、Castle ActiveRecordを使用してテーブルからトップ10の結果を見つけよう

のように使用しています。しかし、私は自分の要求に制約(WHERE句)を追加したくありません。したがって、私は

User.SlicedFindAll(0, 10, 
null, 
NHibernate.Expression.Order.Desc("Score") 

の行に沿って試しましたが、これはNullReferenceExceptionをスローします。すべてのポインタ? (私はSlicedFindAllは良い選択ではないと思う)

Googleはそれを助けなかった。

あなたは、このオーバーロードを使用することができます

答えて

3

:私はLINQを好む

User.SlicedFindAll(0, 10, new[] {Order.Desc("Score")}) 
+0

これはおそらく最適ではないと感じても私がやったことです: – Luk

+0

SlicedFindAllリファレンスドキュメント:http://api.castleproject.org/html/Overload_Castle_ActiveRecord_ActiveRecordMediator_1_SlicedFindAll.htm –

0

ActiveRecordLinq.AsQueryable<User>().Take(10) 

それは完全に

ようSTHし評価する必要があり、それは次のようになり、あなたのケースで

public static T[] SlicedFindAll(int firstResult, int maxResults, NHibernate.Expression.Order[] orders, params NHibernate.Expression.ICriterion[] criteria) 

select top 10 * from User 
関連する問題