如何将十进制变量转换为可空类型

Posted

技术标签:

【中文标题】如何将十进制变量转换为可空类型【英文标题】:How to convert a decimal variable to nullable type 【发布时间】:2021-10-28 09:20:51 【问题描述】:

我有以下属性:

public decimal PaidAmount  get; set; 

以及与属性相关的如下函数:

                var PreviousPaidAmount = _db.SEPayments.Where(v => v.Invoice == items).Select(c => c.PaidAmount).FirstOrDefault();
                SEPayment del = _db.SEPayments.Where(a => a.Invoice == items).FirstOrDefault();
                if (PreviousPaidAmount == null)
                
                    break;
                
                else
                
                    PreviousPaidAmount = _db.SEPayments.Where(v => v.Invoice == items).Select(c => c.PaidAmount).FirstOrDefault();
                    var Paid = del.PaidAmount;
                    Paid -= PreviousPaidAmount;
                    _db.Entry(del).State = EntityState.Modified;
                    _db.SaveChanges();
                

我想将变量 PreviousPaidAmount 转换为可为空的类型 decimal,而不对属性进行任何更改。我是初学者,任何帮助将不胜感激

【问题讨论】:

你的意思是你想让PreviousPaidAmount成为Nullable<decimal> 是的,我希望它可以为空而不改变模型,即属性 在 Select 中,将 c.PaidAmount 转换为 decimal? 【参考方案1】:

一种方法是将Select 调用更改为:

.Select(c => (decimal?)c.PaidAmount)

这将使Select 调用产生IEnumerable<decimal?>,这意味着FirstOrDefault 将产生null 作为默认值,如您所愿。

【讨论】:

【参考方案2】:

代替var PreviousPaidAmount,请写decimal? PreviousPaidAmount

编码愉快:)

【讨论】:

以上是关于如何将十进制变量转换为可空类型的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为可空类型(int、double 等...)

将字符串转换为可空类型(int、double 等...)

关于可空类型到基础类型的转换 问题

可空类型

如何将可空类型隐式转换为不可空类型

可空类型 int?及?相关运算符