使用linq查询检查Null条件

时间:2016-06-09 06:05:36

标签: c# linq null

我使用了连接并选择查询来传递特定实体的动态值,某些字段在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条件也将如何整个选择不起作用。请帮我看看。

2 个答案:

答案 0 :(得分:1)

如果您在IQueryable世界工作(意味着您的linq必须生成数据库查询),则不允许ToString()

您可以使用SqlFunctions.StringConvert

我不确定是否允许HasValue(您可以尝试),但肯定允许!= null

假设您的实体中CommissionIdint?

&#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();