Разделить и модульный тест linq-запрос - PullRequest
1 голос
/ 08 октября 2019

Наша система разработана таким образом, чтобы минимизировать количество обращений к базе данных путем создания всего набора результатов в одном запросе.

Я пытаюсь перестроить подлые длинные запросы linq во что-то, что будет легче читать,а также возможно провести модульное тестирование логики каждого «фильтра», но возникли некоторые проблемы при определении правильного способа использования Expression.

Скажем, у меня есть запрос

return mydbcontext.myusers.Where(<insert a long dastardable linq query here>)

, которыйЯ хочу преобразовать в

Expression<Func<myusers, bool>> IsInCorrectAgeSegment(int minAge, int maxAge)
{
    return x => x.Age <= MaxAge && x.age >= Minage;
}

Expression<Func<myusersaddress, bool>> HasValidPostalCode(int from, int to)
{
    return x => x.Address.PostalCode >= from && x.Address.PostalCode <= to;
}

return mydbcontext.myusers.Where(x => IsInCorrectAgeSegment(30) && HasValidPostalCode(4600, 5000));

Но независимо от того, что я пытаюсь, я получаю ожидание

Operator '&&' cannot be applied to operands of type 'Expression<Func<myuser, bool>>' and 'Expression<Func<myuser, bool>>'

Возможно ли это даже без предварительного сбора всех данных и их обработки впамять вместо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...