我使用了联接并选择查询来传递特定实体的动态值,某些字段在数据库中为空。所以我检查条件!=null
条件,但如果我使用该字段,整个选择语句都会抛出错误。
我的代码如下,
@placementId is as input value
IEnumerable<Submission> sub= from cc in confirmedCarrierRepository
join cs in carrierSubmissionRepository on cc.ConfirmedCarrierID equals cs.ConfirmedCarrierID
where cr.PlacementID == placementId
//orderby c.panel is missed
select new SubmissionEntity
{
PlacementId = placementId,
//The ComissionId is null in db,
CommissionId = cs.CommisionID.HasValue ? cs.CommisionID.ToString() : string.Empty
}
另一种方式:
CommissionId= cs.CommisionID!=null ? cs.CommissionID : new int()
我不明白为什么。即使我检查空条件,整个选择也不起作用。请帮我找出答案。
如果你在IQueryable
环境中工作(意味着你的linq必须生成数据库查询),那么ToString()
是不允许的。
您可以使用 SqlFunctions.StringConvert
我不确定HasValue
是否允许(您可以尝试),但肯定允许!= null
假设CommissionId
是实体中的int?
:
"字符串"方式
CommissionId = cs.ComissionId != null ? SqlFunctions.StringConvert((double)cs.CommmissionId) : string.Empty
"int"方式
CommissionId= cs.CommisionID ?? 0 // or default(int), but not new(int)
使用 c# 合并运算符
CommissionId = (cs.CommisionID ?? 0).ToString();