У меня есть метод, который получает идентификатор категории, за которым следуют два необязательных строковых параметра, которые по умолчанию равны нулю.
Я попытался использовать несколько похожих ответов на другие вопросы о SO, но ни один из них не помог.
Я пытаюсь заставить запрос linq to EF работать следующим образом:
Если какой-либо необязательный параметр имеет значение, используйте это значение, в противном случае используйте Is Null.
Если присутствуют оба необязательных параметра, используйте их как часть запроса или любой из них, если он предоставлен. Но если параметры не добавлены, просто используйте идентификатор категории.
Оба необязательных параметра в базе данных помечены как обнуляемые.
Вот код, который не работает:
from c in dtx.Categories
where c.CategoryId == CatId
&& (string.IsNullOrEmpty(param1) ? c.Param1 == null : c.Param1 == param1)
&& (string.IsNullOrEmpty(param2) ? c.Param2 == null : c.Param2 == Param2)
select c
Попробуйте два:
from c in dtx.Categories
where c.CategoryId == CatId
&& (c.Param1 == null ? c.Param1 == null : c.Param1 == param1)
&& (c.Param2 == null ? c.Param2 == null : c.Param2 == param2)
select c
Ошибки не выдаются, но оба запроса всегда возвращают нулевые результаты, если не указаны оба параметра.
Один из постов, которые я пробовал: Как я могу запросить нулевые значения в структуре сущностей?