Я искал этот сайт для ответов на мой вопрос, но не нашел: (
Мой вопрос:
У меня есть код (в данном случае я использую код бритвы):
@foreach (IAccountingOfferAmount accountingAmount in Model.AccountingOfferAmountList)
{
if(offerProduct.OfferProductId == accountingAmount.OfferProductId)
{
<span>@accountingAmount.BookAmount</span>
}
}
[приведенный выше код является рабочей версией и не имеет проблем с этим)
, что эквивалентно
@Model.AccountingOfferAmountList
.Where(x => x.OfferProductId == offerProduct.OfferProductId)
.FirstOrDefault().BookAmount.ToString();
Проблема:
, если(x => x.OfferProductId == offerProduct.OfferProductId) возвращает значение NULL, код не сможет выбрать значение «BookAmount» и выдаст «Ссылка на объект не установлена на экземпляр ошибки объекта».
Я могу написать:
var test = Model.AccountingOfferAmountList
.Where(x => x.OfferProductId == offerProduct.OfferProductId)
.FirstOrDefault();
if(test != null)
{
<span>@test.BookAmount.ToString()</span>
}
, и это будет работать ..
, но мой вопрос:
Есть ли какой-либо вариант, не используйте "foreach" и "если"предложения (даже без каких-либо переменных) и просто использовать одну строку кода, поэтому он будет игнорировать нулевые результаты?
, например:
@Model.AccountingOfferAmountList.Where(x => x.OfferProductId == offerProduct.OfferProductId)
.DefaultIfNull(String.Empty)
.FirstOrDefault().BookAmount.ToString();
(пример не работает, конечно, просто идеяесли в случае становится пустым, будет напечатано "" и не будет продолжать .irstOrDefault (). BookAmount.ToString ())