在LINQ Expression for SQL中进行空检查

时间:2013-03-14 10:47:46

标签: 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()))

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

感谢。

1 个答案:

答案 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()))