如何在嵌套的AutoMapper Project(). to<>()后执行LINQ操作
本文关键字:执行 操作 LINQ to 嵌套 AutoMapper Project | 更新日期: 2023-09-27 18:03:39
我在c# LINQ中嵌套了select,并希望将它们转换为AutoMapper投影。
这是我的原始查询的一部分:
.ThenByDescending(s => s.CreatedOn)
.Select(s => new SubmissionDetailsViewModel
{
// some mappings
Tests = s.TestRuns
.Select(tr => new TestRunViewModel
{
OrderBy = tr.Test.IsTrialTest ? TestCategoryType.Example : tr.Test.CategoryType,
// some other mappings
})
.GroupBy(tr => tr.OrderBy)
.OrderBy(tr => tr.Key)
})
我如何配置AutoMapper来进行投影,然后在投影的嵌套视图模型上调用GroupBy ?使用Project(). to()代替嵌套的Select不会编译,因为表达式中有可选参数。我尝试使用AfterMap(),但它不做的伎俩。我应该这样做吗?
.CreateMap<ICollection<TestRun>, IOrderedEnumerable<IGrouping<TestCategoryType, TestRunViewModel>>>()
.ProjectUsing()
然后复制嵌套的Select?但是这样的话,我需要自己输入选择,而不是让AutoMapper为我投影。有什么建议吗?
提前感谢!
我相信这是AutoMapper的一个错误/缺点——它不能处理嵌套表达式。4.0版本应该会修复这个问题。