2014-02-19 114 views
0

我試圖做一個左外連接兩個表的情況下,我嘗試以下操作:左外多參加在那裏與LINQ給空引用錯誤

var EducationDetails = (from e in DataContext.HRM_EMP_EDUCATION.AsEnumerable().Where(x => x.EMP_CODE == Employee_Code) 
           from ex in DataContext.HRM_EDUCATION.Where(x => x.EDU_TYPE == "EXAM" && x.EDU_CODE == e.EXAM_CODE).DefaultIfEmpty() 
           select new HRM_EMP_EDUCATIONModel 
           { 
            EXAM_NAME= ex.EDU_NAME==null? "N/A":ex.EDU_NAME 
           }).ToList(); 

時e.Exam代碼爲空,我會得到錯誤。我做錯了什麼?

+1

獲取* what * error? 'NullReferenceException'? – James

+0

是的,我之前在where子句中使用了一個條件,但現在出現錯誤。 –

+1

'.AsEnumerable()'不要那樣做...您正在本地運行查詢。 – Aron

回答

1

變化的條件ex.EDU_NAME==nullex==null?

因爲左外連接EX可以爲空,當您檢查空的EDU_NAME屬性會拋出NullReferenceException

如果您需要檢查空exEDU_NAME,你可以改變如下條件:

EXAM_NAME = (ex!= null || ex.EDU_NAME==null) ? "N/A":ex.EDU_NAME 
+0

是的,現在工作正常。爲了進一步學習,你可以請解釋如果ex不是null,但某些屬性說ex.Something爲null,該怎麼辦?在這種情況下如何檢查null? –

+1

檢查我的更新,首先檢查對象,然後您可以檢查屬性。 – Damith