在LINQ Expression for SQL中进行空检查

Tim*_*Tim 3 c# linq linq-to-entities expression automapper

我的任务是为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()))
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

voi*_*oid 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()))
Run Code Online (Sandbox Code Playgroud)