C# SQL的LINQ表达式中的Null检查

C# SQL的LINQ表达式中的Null检查,c#,linq,linq-to-entities,expression,automapper,C#,Linq,Linq To Entities,Expression,Automapper,我的任务是为Automapper创建LINQ表达式,它必须能够转换为SQL表达式。这意味着没有方法调用,这就是我遇到的问题 我有一个记录,有两列感兴趣-ProposedStartDate和ActualStartDate。我想获取ActualStartDate如果它存在,如果为空,则获取ProposedStartDate .ForMember(d => d.StartDate, opt => opt.MapFrom(s => (from foo in s.foo

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

我有一个记录,有两列感兴趣-
ProposedStartDate
ActualStartDate
。我想获取
ActualStartDate
如果它存在,如果为空,则获取
ProposedStartDate

     .ForMember(d => d.StartDate, opt => opt.MapFrom(s => (from foo in s.foo
                                                           orderby foo.ProposedStartDate ascending
                                                           select foo.ProposedStartDate).LastOrDefault()))
到目前为止,我在那里,但不确定如何检查空值并以安全的方式提取
ActualStartDate
。任何帮助都会很棒


谢谢。

只需使用
操作符即可。它在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()))

那很容易!我以为??然后呢操作不起作用。