3

我的任务是为 Automapper 创建 LINQ 表达式,它必须能够转换为 SQL 表达式。这意味着没有方法调用,这是我遇到问题的地方。

我有两列感兴趣的记录 -ProposedStartDateActualStartDate. 我想获取ActualStartDate它是否存在,如果为 null 然后获取ProposedStartDate.

     .ForMember(d => d.StartDate, opt => opt.MapFrom(s => (from foo in s.foo
                                                           orderby foo.ProposedStartDate ascending
                                                           select foo.ProposedStartDate).LastOrDefault()))

到目前为止,我在那里,但不确定如何检查空值并ActualStartDate以安全的方式拉出。任何帮助都会很棒。

谢谢。

4

1 回答 1

6

只需使用??运算符。它在 sql 端被翻译成 COALESCE

.ForMember(d => d.StartDate, opt => opt.MapFrom(s => (from foo in s.foo
                                                      orderby foo.ActualStartDate??foo.ProposedStartDate ascending
                                                      select foo.ActualStartDate??foo.ProposedStartDate).LastOrDefault()))
于 2013-03-14T10:55:51.807 回答