Я получаю список всех пользователей в моей базе данных со следующим кодом:
IEnumerable<Firma> firmaer = db.Firma.ToList();
Я пытаюсь сопоставить каждого пользователя ViewModel, который выглядит следующим образом:
public class UserViewModel
{
public String CVR_Nummer { get; set; }
public DateTime LastActivityDate { get; set; }
public DateTime CreationDate { get; set; }
public String FirmaNavn { get; set; }
}
Когда поле firma_navn в базе данных пусто, я получаю исключение NullReferenceException
model.FirmaNavn = firmaer.Where(x => x.CVR_nummer == user.UserName).FirstOrDefault().firma_navn ?? "Missing";
Выдает исключение NullReferenceException.
Я могу поймать это исключение, но где-то слышал, что ловить исключения довольно тяжело.
То, что я хотел бы сделать, это сделать
model.FirmaNavn = "Missing";
Если поле не заполнено в базе данных.
Возможно ли это без перехвата исключения, или я ошибаюсь из-за того, что перехват исключения является тяжелым?
EDIT
Вот как теперь выглядит метод (после справки):
public List<UserViewModel> MapUserViewModel(MembershipUserCollection users)
{
List<UserViewModel> userviewmodel = new List<UserViewModel>();
IEnumerable<Firma> firmaer = db.Firma.ToList();
foreach (MembershipUser user in users)
{
UserViewModel model = new UserViewModel();
model.CVR_Nummer = user.UserName;
model.CreationDate = user.CreationDate;
model.LastActivityDate = user.LastActivityDate;
var firma = firmaer.Where(x => x.CVR_nummer == user.UserName).FirstOrDefault();
if (firma != null)
{
if(string.IsNullOrEmpty(firma.firma_navn))
model.FirmaNavn = "Missing";
else
model.FirmaNavn = firma.firma_navn;
}
/*if (firmaer != null)
{
var firma = firmaer.Where(x => x.CVR_nummer == user.UserName).FirstOrDefault();
model.FirmaNavn = firma.firma_navn ?? "Mangler";
}
*/
userviewmodel.Add(model);
}
return userviewmodel;
}
Сейчас работает. Спасибо.