Наша система разработана таким образом, чтобы минимизировать количество обращений к базе данных путем создания всего набора результатов в одном запросе.
Я пытаюсь перестроить подлые длинные запросы 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>>'
Возможно ли это даже без предварительного сбора всех данных и их обработки впамять вместо?