我正在创建一个传递可选谓词的方法,但在某些情况下我需要对从此方法过滤的数据进行排序。我不知道如何通过谓词本身传递订单条件,或者还有其他方法可以做到这一点?
但请记住,我需要动态传递排序条件,因为在不同的部分有不同的排序条件
当我从方法中获取数据时,我会应用排序条件,但正如您在方法中看到的那样,AutoMapper正在完成其工作,只从TechArchiveNoSubsYpdcResult
模型中获取必要的属性。有时我需要使用TechArchiveNoSubsYpdcResult
模型本身未包含的模型CompletedJobViewModel
中的属性来对数据进行排序。
public IEnumerable<CompletedJobViewModel> GetCompletedJobsViewModels(Guid vesselId, int year, Func<TechArchiveNoSubsYpdcResult, bool> predicate = null)
=> Mapper.Map<IEnumerable<CompletedJobViewModel>>(GetArchiveNoSubsYpdcResults(vesselId, year).OptionalWhere(predicate));
有人知道如何在方法中传递动态排序条件吗?
AutoMapper将TechArchiveNoSubsYpdcResult
映射到CompletedJobViewModel
我正在寻找类似于“谓词”的命令:
public IEnumerable<CompletedJobViewModel> GetCompletedJobsViewModels(Guid vesselId, int year, Func<TechArchiveNoSubsYpdcResult, bool> predicate = null, Order<Something> orderCondition = null)
=> Mapper.Map<IEnumerable<CompletedJobViewModel>>(GetArchiveNoSubsYpdcResults(vesselId, year).OptionalWhere(predicate)).OptionalOrder(orderCondition);
答案 0 :(得分:1)
如果您需要按单个字段进行排序,可以选择&#34;键选择器&#34;功能,像这样:
public IEnumerable<CompletedJobViewModel> GetCompletedJobsViewModels<TKey>(Guid vesselId, int year, Func<TechArchiveNoSubsYpdcResult, bool> predicate = null, Func<TechArchiveNoSubsYpdcResult,TKey> keySelector = null) {
var res = Mapper.Map<IEnumerable<CompletedJobViewModel>>(GetArchiveNoSubsYpdcResults(vesselId, year).OptionalWhere(predicate));
if (keySelector != null) {
res = res.OrderBy(keySelector);
}
return res;
}