LINQ to entity query,在使用navigation属性之前检查null

时间:2017-06-21 21:52:31

标签: c# .net linq linq-to-entities

请查看此简化的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; }
    //......
}

如果nullp,我想要的是返回null而不是零。简单地用0替换null给了我这个错误:

  

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

p?.ID_CONSULTATION给了我这个错误:

  

lambda表达式arborecence不能包含空传播   操作

我在.NET 4.6上。

1 个答案:

答案 0 :(得分:2)

您只需将零更改为null并将其转换为int?

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