Uzyskuję dostęp do zdalnego źródła danych i stwierdziłem, że łączenie grupowe powoduje przekształcenie zapytania IQueryable w pytanie IEnumerable,Łączenie grup powoduje, że IQueryable zmienia się w IEnumerable, dlaczego?
: czy wpłynie to na wydajność? Chcę odciążyć tyle zapytania do bazy danych, jak to możliwe, i nie wykonać coś w pamięci ...
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
})
});
Linia: .GroupJoin (_abilities, x => x.eProfile.ID Y => y.ID, (x, y)> New QuoteDTO
- _abilities jest IQueryable, uzyskać zdolność użytkownika, zbiór obiektów
- druga część (x , y) - tutaj zostaje przekształcona w IEnumerable ...
var cLists = List<int>();
// ta kolekcja jest wypełniana od kodu klienta, powiedzmy to // zawiera 1,3,55 argumentów sake ...
var _abilities= repo.All<UserAbility>()
.Where(x => x.Status == Status.Active.ToString())
.Where(x => cLists.Contains(x.CompetencyID));
UWAGA: powodem, zastosowanie var jest tak, że można przekształcić w obiekt mój gust, używałem dużo anonimowych typów zanim zostały wstawione obiekty DTO ...
Który bit jest "przekształcony w IEnumerable"? A co to _ możliwości? –
Jest to sub-zapytanie, zaktualizowałem powyższy kod ... – Haroon
Czy '_abilities' to' IQueryable'? Jakie są typy danych wszystkich zmiennych? Proszę nie używać 'var', nie możemy wywnioskować typów zmiennych ani kompilatora. – Greg