null 合体演算子が間違った場所にあります。現在、無条件に呼び出しWhere
て、結果が null になるかどうかを確認しています...決してnull にはなりません(単に null を返さない)。あなたは潜在的に欲しい:payment.NewInvoiceModels
Where
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))