请查看此简化的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
而不是零。简单地用0
替换null
给了我这个错误:
无法确定条件表达式类型,因为有 和intentre和int之间没有隐式转换
p?.ID_CONSULTATION
给了我这个错误:
lambda表达式arborecence不能包含空传播 操作
我在.NET 4.6上。
答案 0 :(得分:2)
您只需将零更改为null
并将其转换为int?
:
ID_CONSULTATION = (p == null ? (int?)null : p.ID_CONSULTATION)