1

リポジトリ パターンを使用して NHibernate エンティティをラップしています。メソッドの 1 つは、public IList<T> GetAll()そのエンティティのすべての項目を単純に返すものです。実装は、Criteria または QueryOver のいずれかで行われます。

このメソッドをオーバーロードして、次のような並べ替え順序を受け入れるようにしたいと思います。public IList<T> GetAll(NHOrderFor<T> order)これを呼び出して、順序を流暢に定義できます。これは可能ですか?QueryOver が推奨されますが、必須ではありません。

アップデート

もう少し先になりました。Expression<Func<T,object>> pathQueryOver.OrderBy() で期待されるパラメーターを定義しましたが、.Asc or .Desc従う必要がある仕様が式にありません。

4

1 に答える 1

0

bool変数を渡して、それがascかdescかを判断できます。唯一の「トリッキーな」部分は、.Ascと.Descがプロパティであるため、結果に割り当てる必要があります(何もする必要はありません)。結果はtho-同じクエリオーバーを返すだけです)、例:

public IList<T> GetAll(Expression<Func<T,object>> path, bool ascending) {
    if (ascending)
        queryOver = queryOver.OrderBy(path).Asc;
    else
        queryOver = queryOver.OrderBy(path).Desc;
    return queryOver.List<T>();
}
于 2012-06-13T07:14:54.343 に答える