Есть ли способ создать лямбду Where
для конкатенации двух строковых полей, чтобы она правильно делала это в SQL? Допустим, у меня есть человек, и есть два поля: Имя
и Фамилия
. Я хочу иметь возможность фильтровать по их полному имени, которое отображается на странице как FirstName + LastName
.
Я не могу использовать комбинированное свойство, например FullName
в linq lambda, потому что SQL не знает, что это такое, и выдает ошибку. Я мог бы сначала запустить запрос, используя .AsEnumerable ()
перед Where
, но это менее эффективно (я думаю?)
Я пробовал .Where (p => (p.FirstName + p.LastName) .Contains (filterText))
, и это выполняется без ошибок, но на самом деле он может фильтровать только по одному за раз. Это похоже на то, как полученный sql говорит WHERE FirstName LIKE% text% OR LastName LIKE% text%
вместо поиска конкатенации. Это означает, что мой текст фильтра не может охватывать имя и фамилию. Если я ищу "hn Do"
в "John Doe"
, я не получаю результатов.
Итак, есть ли правильный способ сделать это в LINQ или мне нужно согласиться на альтернативное решение?