您将 null 合并运算符放在错误的位置 - 目前您正在无条件地调用Where
,payment.NewInvoiceModels
然后检查结果是否为 null ......它永远不会是(Where
根本不返回 null)。您可能想要:
foreach (var pmt in (payment.NewInvoiceViewModels ??
Enumerable.Empty<NewInvoiceViewModel>())
.Where(x => x.PaymentReceived != 0))
我个人会提取这个:
var allModels = payment.NewInvoiceViewModels ??
Enumerable.Empty<NewInvoiceViewModel>();
foreach (var pmt in allModels.Where(x => x.PaymentReceived != 0))
或者也许引入一个扩展方法:
public static IEnumerable<T> NullToEmpty(this IEnumerable<T> source)
{
return source ?? Enumerable.Empty<T>();
}
然后:
foreach (var pmt in payment.NewInvoiceViewModels
.NullToEmpty()
.Where(x => x.PaymentReceived != 0))