我正在用 NHibernate 构建一个存储库框架。我的部分要求包括限制返回的结果数量或强制分页。为了让 NHibernate 成功解析来自 IQueryable 表达式的查询,它必须在任何 .Skip().Take() 操作之前执行 OrderBy 或 OrderByDescending 操作。
这就是我当前签名的调用方式。
var actualExerciseJournals = repo.GetAll( pageIndex: pageNum++, recordsPerPage: 250, orderByFirst: exerciseJournal => exerciseJournal.JOURNALDATE, orderBySecond: exerciseJournal => exerciseJournal.MEMBERID);
这是接口签名。
IEnumerable<TEntity> GetAll(int pageIndex, int recordsPerPage, Expression<Func<TEntity, object>> orderByFirst, Expression<Func<TEntity, object>> orderBySecond, Expression<Func<TEntity, object>> orderByThird, Expression<Func<TEntity, object>> orderByFourth, params Expression<Func<TEntity, object>>[] include);
(包含参数与问题无关)
是否有可能有一个签名可以接受这样的参数作为参数?
var actualExerciseJournals = repo.GetAll(pageIndex: 0, recordsPerPage: 250, collectionToOrder => collectionToOrder.OrderBy(x => x.JOURNALDATE).ThenBy(y => y.MEMBERID));
然后我将能够在我的存储库中应用这个表达式,并且我将不再对 orderbys 的数量有任何限制,或者它是否是 orderbydescending 或其他。
谢谢