2012-12-03 26 views
2

這裏是我的查詢:LINQ到SQL:如果連接條件左手邊等於NULL,對象引用異常被拋出

from f in DataAccess.Data.FList 
join fA in DataAccess.Data.FAppsList on f.ID equals fA.fID into fApps 
from fA in fApps.Where(fA => fA.Year == reportYear).DefaultIfEmpty() 
join fSrc in DataAccess.Data.FSourcesList on new { ID = fA.sourceID, CropYear = reportYear } 
equals new { ID = fSrc.ID, CropYear = fSrc.CropYear } 

我得到的對象引用空異常如fa == NULL。我在fA上做了一個左連接,因此它可以是null或非null值。如何重寫這部分查詢,以便查詢在fA爲空時不會引發異常。

非常感謝!

回答

1

ternary conditional operator (?:)共同構建體,其可以用於保障上的null-valued表達調用構件是:

foo != null ? foo.bar : anExpressionThatDoesNotUseFoo 

在上下文:

new { 
    ID = fA != null ? fA.sourceID : 0, // or as appropriate 
    .. 
} 
+0

非常感謝。有效! – Aqua267