Я в основном пытаюсь перебрать большой объем данных и преобразовать запрос возвращенных данных в более ограниченный объект в модели представления.
Вместо того, чтобы делать огромный фрагмент кода, я звоню.ForEach () в списке, затем добавление новой записи в список модели представления.
Это прекрасно работает, но есть одно свойство (Адрес), которое является необязательным.
Когда япри достижении необязательного элемента я получаю NullReferenceException
, если элемент из БД не имеет записи.
Пример кода:
var tmp = _context.Person.Include(x => x.Address).ToList();
tmp.ForEach(x => vm.List.Add(new IndexListItem()
{
Name = x.Name,
Address = x.Address.FirstLine + " " + x.Address.SecondLine,
ID = x.ID
}));
С тех пор я узнал отдругой ответ на этом сайте, что если я изменю адресную строку так, чтобы она гласила:
Address = x.Address?.FirstLine + " " + x.Address?.SecondLine,
Код теперь работает, когда я нажимаю пустую запись в tmp
.
Я непонимать это, так как свойство Address в tmp
уже допускает нулевые значения, а свойство Address в модели представления допускает нулевые значения, поэтому, почему внезапное изменение строки не возвращает ошибку?
Кроме того,причина для меня не делать x.Address?.FirstLine?
, потому что этострока и строки уже обнуляются?