Похоже, это стандартное поведение конкатенации строк SQL (то же самое происходит с базой данных SqlServer).
Если вы хотите оценить сторону сервера конкатенации (базы данных), вам нужно преобразовать null
в пустую строку ""
(или что-то еще), используя оператор ??
. Аналогично вашей попытке, но вы пропустили приоритет оператора C #. То, как вы это написали, эквивалентно
N.Address1 ??
(
("?" + " | " + N.Address2) ??
(
("?" + " | " + N.City) ?? "?"
)
)
что не было целью.
Вы можете избежать таких проблем, заключив аналогичные преобразования в скобки:
select new
{
label = (N.Address1 ?? "?") + " | " + (N.Address2 ?? "?") + " | " + (N.City ?? "?"),
id = N.ID,
}