我正在寻找一个查询,以根据发票 ID 返回所有付款的总和 - 但是,如果没有记录付款,则下面的查询将返回 null。有什么方法可以返回 0 而不是 null 吗?我试过添加??0 结尾,但得到消息Operator ?? cannot be applied to operands of type decimal and int
AmountAllocated 是 Decimal 类型:
public decimal AmountAllocated { get; set; }
谢谢,马克
当没有找到付款行时,以下内容为 Sum 返回 null:
var invoiceVM = from i in db.Invoices
where i.UserName==userName
select new NewInvoiceViewModel
{
InvoiceId = i.InvoiceId,
SumPayments =
db.PaymentInvoices.Where(pi => pi.InvoiceId == i.InvoiceId)
.Select(pi => pi.AmountAllocated).Sum()
};
以下导致Operator ?? cannot be applied to operands of type decimal and int
错误:
var invoiceVM = from i in db.Invoices
where i.UserName==userName
select new NewInvoiceViewModel
{
InvoiceId = i.InvoiceId,
SumPayments =
db.PaymentInvoices.Where(pi => pi.InvoiceId == i.InvoiceId)
.Sum(pi => pi.AmountAllocated) ?? 0
};
如果已付款,则 AmountAllocated 正确返回这些付款的总和 - 如果没有找到付款行,则返回 null。
从下面的截图可以看到,第一条记录有付款,正确显示为 10(十进制) - 第二条记录没有付款,显示为 null(十进制)。