gpt4 book ai didi

c# - 是否可以将 OrderBy 表达式作为参数传递?

转载 作者:行者123 更新时间:2023-11-30 12:10:42 26 4
gpt4 key购买 nike

我正在使用 NHibernate 构建存储库框架。我的部分要求包括限制返回的结果数量或强制分页。为了让 NHibernate 成功地从 IQueryable 表达式解析查询,它必须在任何 .Skip().Take() 操作之前执行 OrderBy 或 OrderByDescending 操作。

这就是我当前签名的调用方式。

var actualExerciseJournals = repo.GetAll( pageIndex: pageNum++, recordsPerPage: 250, orderByFirst: exerciseJournal => exerciseJournal.JOURNALDATE, orderBySecond: exerciseJournal => exerciseJournal.MEMBERID);

这是接口(interface)签名。

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);

(include 参数与问题无关)

有没有可能有一个签名可以接受这样的东西作为参数?

var actualExerciseJournals = repo.GetAll(pageIndex: 0, recordsPerPage: 250, collectionToOrder => collectionToOrder.OrderBy(x => x.JOURNALDATE).ThenBy(y => y.MEMBERID));

然后我就可以在我的存储库中应用这个表达式,并且我将不再对 orderby 的数量或它是否是 orderbydescending 有任何限制。

谢谢

最佳答案

lambda 表达式只是一个函数。所以你应该可以使用 Func<IEnumerable<TEntity>,IEnumerable<TEntity>> .您实际上想要传入一个接受 IEnumerable 的函数并给出不同的 IEnumerable .

关于c# - 是否可以将 OrderBy 表达式作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17433665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com