#c# #oop #model
#c# #ооп #Модель
Вопрос:
У меня есть модель адресов в моем приложении:
**[Key]**
public int CustomerAddressId { get; set; }
public string CompanyName { get; set; }
public string Address1 { get; set; } **NOT NULL**
public string Address2 { get; set; }
public string Address3 { get; set; }
public string City { get; set; }
public string County { get; set; }
public string Postcode { get; set; } **NOT NULL**
**[ForeignKey]**
public int CountryId { get; set; }
У меня есть модель страны с CountryNameCustomer, CountryNameCustomer
Я хотел бы добавить вычисляемое поле в мою модель адресов клиентов, которая выводит единственную адресную строку с учетом любых полей, которые могут быть нулевыми.
Например, для следующего адреса:
Адрес 1: улица Рэймонд, 4
Адрес 2: Лейтон
Сити: Лондон
Почтовый индекс: W13 5TY
Я бы хотел, чтобы моим вычисляемым полем было «4 Raymond Road, Лейтон, Лондон, W13 5TY».
Я не уверен в самом элегантном способе достижения этой цели.
Я мог бы сделать что-то вроде следующего:
var address = "";
if(CompanyName != null){address = CompanyName ",";}
if(Address1 != null){address = Address1 ",";}
и так далее…
Есть ли более элегантный способ добиться этого?
Всего наилучшего.
Комментарии:
1. Вы можете попробовать использовать интерполированную строку, это может сделать код немного более компактным, но то, как вы написали, понятно и читаемо. docs.microsoft.com/en-us/dotnet/csharp/language-reference /…
Ответ №1:
Переопределите ToString
в своем классе «пользовательский адрес» следующим образом:
public override string ToString()
{
var parts = new List<string>();
parts.AddRange(new [] {CompanyName, Address1, Address2, Address3, City, County, Postcode});
return string.Join(", ", parts.Where(part => !string.IsNullOrEmpty(part)));
}