Задать вопрос
@CityzenUNDEAD

Как задать логическое && в лямба выражении?

Приветствую!
Возникла сложность, которую я почему-то даже загуглить не знаю как..
Мне нужно получить данные из бд по linq запросу.
В этом запросе я пытаюсь установить фильтр. Фильтр представляет из себя диапазон из дат, максимальная и минимальная. Соответственно, мне нужно получить то что находится в этом диапазоне.
var testQuery = _repository.GetAll()
            .WhereIf(input.SortDateStart != null && input.SortDateEnd != null,
                faqs => faqs.CreationTime >= input.SortDateStart && faqs.CreationTime <= input.SortDateEnd)
            .WhereIf(input.SortDateStart != null && input.SortDateEnd is null,
                faqs => faqs.CreationTime >= input.SortDateStart).Count();


Проблема на этой строке
input.SortDateStart != null && input.SortDateEnd != null

В рамках ламда выражения не получается логические &&.
Дополнительные скобки в виде
((input.SortDateStart != null) && (input.SortDateEnd != null))

погоды не решили.
Буду признателен за подсказки.
  • Вопрос задан
  • 275 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
у вас противоречивые условия. даже поменяв их местами, вы не решите свою задачу. какой бы она не была. надо еще подумать. удачи ))

ps количество не завешенных задач/процессов? )))
каждая .WhereIf это выборка/запрос (как удобнее)... так вот вторая идет из первой. и по моему в первой вы уже отсекаете незавершенные.
подебажде поэтапно

pps ну и да, WhereIfне совсем типичный метод. тут поддержу коллег.. опять же, может во Whereполучатся более прозрачные условия )))

ppps CityzenUNDEAD, еще смущающее место
faqs => faqs.CreationTime >= input.SortDateStart && faqs.CreationTime <= input.SortDateEnd
использование faqs в его определении.. сам бы ни когда не стал так делать...
... а у вас аж два раза... это рекурсия в лямбде... а с рекурсиями надо быть хорошо знакомым... я так думаю...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
NikFaraday
@NikFaraday
Student full-stack Developer
WhereIf? Может просто Where использовать? Туда как раз таки можно передать лямбду. и использовать логическое &&
Ответ написан
Комментировать
@CityzenUNDEAD Автор вопроса
Спасибо всем за комментарии!
Проблема была в другом, у меня просто дата не корректно парсилась)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы