Могу ли я объединить поля через Linq в Sql
-
10-07-2019 - |
Вопрос
Я новичок в Linq to Sql, чего я хотел бы добиться - создать единственное свойство только для чтения в классе Entity, которое представляет собой комбинацию нескольких полей, в частности, я хочу создать поле имени, которое объединяет заголовок , имя и фамилия.
Я могу понять, как это сделать, изменив файл .designer.cs, но знаю, что я не должен это трогать.
Я пытаюсь сделать это, чтобы в динамических данных я получал один столбец, а не несколько столбцов.
Решение
Хитрость в том, чтобы использовать частичный класс
; создайте новый файл .cs и в том же пространстве имен добавьте новый класс с именем для вашего типа:
namespace My.Data.Namespace {
partial class Employee {
public string Foo {
get {return Forename + " " + Surname; } // etc
}
}
}
Этот объединяется с исходным (созданным) файлом класса. Это общий подход для добавления дополнительной функциональности в сгенерированные объекты (включая контекст данных). Возможно, вы также захотите взглянуть на «частичные методы», поскольку LINQ-to-SQL определяет и использует несколько частичных методов.
Одно предупреждение: если ваш dbml называется MySystem.dbml
, тогда избегайте создания файла MySystem.cs
(предположительно для ваших частичных классов ); в генераторе кода есть ошибка, которая может привести к сбою. Просто назовите это как-нибудь еще.
Другие советы
в вашем утверждении LINQ select, почему бы вам не использовать что-то вроде:
select new {FullName = x.FirstName + " " + x.Surname};
Не уверен, что синтаксис там 100%, но проверь идею.