Есть ли способ создать Where
лямбду на конкатенации двух строковых полей, чтобы он правильно делал это в SQL?Скажем, у меня есть человек, и есть два поля, FirstName
и LastName
.Я хочу иметь возможность фильтровать по их полному имени, которое показано на странице как FirstName + LastName
.
. Я не могу использовать комбинированное свойство, такое как FullName
в лямбда-выражении linq, поскольку в 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 или я должен согласиться на альтернативное решение?