如何安全地转换为Integer可能的空值

时间:2019-10-22 13:49:51

标签: c# parsing casting null

var data = mockDataDB.Data.AsQueryable()
   .Select(x => new ProductDto
   {
       Id = Convert.ToInt64(x.id), // this might fail because id might be null 
       Quantity = Int32.TryParse(x.quantity, out int somenumber) ? x.quantity : (int?)null
   }

此代码的问题是x.idx.quantity有时可能为null,它们都是string类型,id和数量分别是int64和{{ 1}} ..

我如何安全地解决这个问题?

谢谢

欢呼

3 个答案:

答案 0 :(得分:1)

您可以在TryParse中使用三元表达式进行内联,前提是您要牢记Id为null时的默认值。

~/.kube.

答案 1 :(得分:0)

类似这样的内容:Id = Int64.TryParse(x.id, out int somenumber) ? somenumber : 0

答案 2 :(得分:-1)

编辑: 您应该检查String变量(x.id)是否为null。如果是这样,则将其设置为零或所需的某个默认值。如果不是,则继续进行转换。 例如:

Id = (x.id == null) ? 0 : Convert.ToInt64(x.id);