我的任务是为Automapper创建LINQ表达式,它必须能够转换为SQL表达式。这意味着没有方法调用,这是我遇到问题的地方。
我有两列感兴趣的记录 - ProposedStartDate
和ActualStartDate
。我希望得到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
。任何帮助都会很棒。
感谢。
答案 0 :(得分: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()))