2014-02-19 116 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