2017-06-21 42 views
1

请看看这个简单的LINQ查询之前检查空:LINQ到实体查询,使用导航属性

var lst = from pat in ctx.PATIENTS 
           join cons in ctx.CONSULTATIONS.Include(a => a.EXAMENS) 
           on pat.ID_PATIENT equals cons.CON_ID_PATIENT into joinpatcons 
           from p in joinpatcons.DefaultIfEmpty() 
           select new ConsultationsPageType() 
           { 
            ID_CONSULTATION = (p == null) ? 0 : p.ID_CONSULTATION 
           }; 

的ID_CONSULTATION字段是一个可空INT

public class ConsultationsPageType 
    { 
     ...... 
     public int? ID_CONSULTATION { get; set; } 
     ...... 
    } 

我想要的是返回null如果p是null而不是零。

通过替换为null简单地0给了我这个错误

无法确定条件表达式的类型,因为有 之间和intentre和没有隐式转换诠释

且p?.ID_CONSULTATION此一个

lambda表达式树状不能包含空传播 运算符

我是.NET 4.6

感谢上。

+1

那么什么是很难在其更改为'ID_CONSULTATION =(P == NULL)? null:p.ID_CONSULTATION'?我错过了什么吗? –

+0

对不起,请看编辑过的问题 – user2475096

+0

你可以将'null'转换为'int?'。看到我更新的答案。 –

回答

1

您可以简单地改变零null和它转换为int?

ID_CONSULTATION = (p == null ? (int?)null : p.ID_CONSULTATION) 
+0

工作得很好!谢谢 :) – user2475096