Ответы на подобные вопросы у меня не работают.
Рассмотрим конкататный запрос этой строки:
.Where(c => (
c.FirstName ?? String.Empty +
c.LastName ?? String.Empty +
c.CompanyName ?? String.Empty).Contains(searchText)
результаты в sql ниже. это фактически не может найти совпадение по фамилии из-за первого оператора case.
Я прыгаю через всевозможные обручи, чтобы найти решение (вычисляемый столбец <забудь, udf <забудь, sp <забудь), вариации на тему где ... </p>
CASE
WHEN ([Extent3].[FIRST_NM] IS NULL)
THEN
CASE
WHEN (@p__linq__0 + [Extent3].[LAST_NM] IS NULL)
THEN
CASE
WHEN (@p__linq__1 + [Extent3].[COMPANY_NM] IS NULL)
THEN @p__linq__2
ELSE @p__linq__1 + [Extent3].[COMPANY_NM]
END
ELSE @p__linq__0 + [Extent3].[LAST_NM]
END
ELSE [Extent3].[FIRST_NM]
END LIKE @p__linq__3 ESCAPE N''~'')
Есть идеи?