Адресная модель C # — объединение адресов Address1, Address2 и т.д. в вычисляемое поле

#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)));
        }