В моем приложении мне нужно отобразить некоторую информацию о клиентах (у клиента есть код и имя). Одним из полей является «отображаемое имя», где
DisplayName = Code + " - " + Name
Я извлекаю клиента из базы данных в модель представления и задаю DisplayName, например:
from customer in this.Context.Customers
select new CustomerViewModel
{
DisplayName = customer.Code + " - " + customer.Name
}
Но я хотел бы извлечь эту логику в выражение или функцию, потому что я использую ее в нескольких местах, и если логика меняется (например, DisplayName = Name), тогда мне нужно сделать много изменений.
Поэтому я создал эту функцию
Func<Customer, string> CustomerDisplayName = (c => c.Code + " - " + c.Name)
и используйте его так:
from customer in this.Context.Customers
select new CustomerViewModel
{
DisplayName = CustomerDisplayName(customer)
}
Он работает нормально и делает логику многократно используемой, но проблема в том, что функция не может быть проанализирована в операторе SQL, поэтому LinqToSql сначала получает данные («Код» и «Имя»), а затем выполняет функцию для каждой записи.
Должен ли я беспокоиться о производительности (если у меня много данных) и придерживаться первого варианта? Или можно использовать функцию?