2013-03-14 40 views
3

我的任務是爲Automapper創建LINQ表達式,該表達式必須能夠轉換爲SQL表達式。這意味着沒有方法調用,這是我遇到問題的地方。NULL在LINQ表達式中檢查SQL

我有兩列感興趣的記錄 - ProposedStartDateActualStartDate。如果它存在,我想獲得ActualStartDate,如果爲空則獲取ProposedStartDate

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

到目前爲止,我在那裏,但我不確定如何檢查空值和安全的方式拉ActualStartDate。任何幫助都會很棒。

謝謝。

+0

'x.Foo!= null' – Aron 2013-03-14 10:50:20

回答

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())) 
+0

那很容易!我以爲 ??和? :操作不起作用。 – Tim 2013-03-14 11:15:44