我使用了连接并选择查询来传递特定实体的动态值,某些字段在db中为空。所以我检查条件!=null
条件,但如果我使用该字段,则整个select语句抛出错误。
我的代码如下,
@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()
我无法理解为什么。即使我检查null条件也将如何整个选择不起作用。请帮我看看。
答案 0 :(得分:1)
如果您在IQueryable
世界工作(意味着您的linq必须生成数据库查询),则不允许ToString()
。
您可以使用SqlFunctions.StringConvert
我不确定是否允许HasValue
(您可以尝试),但肯定允许!= null
假设您的实体中CommissionId
是int?
:
&#34;字符串&#34;方式
CommissionId = cs.ComissionId != null ? SqlFunctions.StringConvert((double)cs.CommmissionId) : string.Empty
&#34; int&#34;方式
CommissionId= cs.CommisionID ?? 0 // or default(int), but not new(int)
答案 1 :(得分:0)
使用c#coalesce运算符
CommissionId = (cs.CommisionID ?? 0).ToString();