Я обращаюсь к удаленному источнику данных и обнаружил, что при групповом объединении запрос IQueryable преобразуется в IEnumerable,
вопрос: это повлияет на производительность? Я хочу разгрузить как можно большую часть запроса к базе данных и ничего не выполнять в памяти ...
var allusers = repo.All<User>().Where(x => x.IsActive);
var _eprofile = repo.All<Profile>()
.Where(x => x.IsProfileActive)
.Join(allusers, x => x.UserID, y => y.UserID, (x, y) => new
{
eProfile = x,
profile = y
})
.GroupJoin(_abilities, x => x.eProfile.ID, y => y.ID, (x, y) => new QuoteDTO
{
UserID = x.profile.Login,
Email = x.profile.Email,
Tel = x.profile.Tel,
Mobile = x.eProfile.Mobile,
CompanyID = x.profile.CompanyID,
Ability = y.Select(c => new AbilityDTO
{
Name= c.Name
})
});
Строка:
.GroupJoin ( _abilities , x => x.eProfile.ID, y => y.ID, (x, y) => new QuoteDTO
- _abilities - это IQueryable, я получаю возможность пользователя, набор объектов
- вторая часть (x, y) - здесь y превращается в IEnumerable ...
var cLists = List<int>();
// эта коллекция заполняется из клиентского кода, скажем так
// содержит 1,3,55 для аргументов ради ...
var _abilities= repo.All<UserAbility>()
.Where(x => x.Status == Status.Active.ToString())
.Where(x => cLists.Contains(x.CompetencyID));
ПРИМЕЧАНИЕ: причина, по которой я использую var, заключается в том, что я могу превратиться в объект, который мне нравится, я использовал много анонимных типов до того, как объекты DTO были вставлены ...