如何在嵌套的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 Project(). to<>()后执行LINQ操作

相信这是AutoMapper的一个错误/缺点——它不能处理嵌套表达式。4.0版本应该会修复这个问题。