Я пытаюсь написать запрос linq-to-sql, используя || это ведет себя так же, как ИЛИ в SQL в сочетании с LIKE/Contains.
SQL:
SELECT * FROM Users
WHERE GroupNumber = 'A123456'
OR (FirstName LIKE 'Bob%' AND LastName LIKE 'Smith%')
Это приведет к тому, что все с именем, например «Боб Смит», а также все с номером группы, точно равным A123456. В моей базе данных пример sql дает мне три результата (желаемый результат):
A123456 John Davis A312345 Bob Smith A123456 Matt Jones
Linq: (при условии, что PNum = A123456; первый = "Боб", последний = "Смит")
var users = from a in dc.Users
where a.PolicyNumber == PNum || (SqlMethods.Like(a.FirstName, first + "%") && SqlMethods.Like(a.LastName, last + "%"))
orderby a.PolicyNumber, a.FirstName
select a;
Это даст мне результаты только слева от ||:
A123456 John Davis A123456 Matt Jones
Я также пробовал a.Contains() и a.StartsWith(), но с каждой версией я получаю одни и те же два результата. Когда я удаляю любые Like/Contain/StartsWith, я получаю желаемый результат, но мне нужно подстановочный знак. Как получить все три результата в запросе Linq?