Sto accedendo a un'origine dati remota e ho riscontrato che un'unione di gruppo comporta la trasformazione di una query IQueryable in una variabile IEnumerable,L'unione di un gruppo fa diventare IQueryable in IEnumerable, perché?
: influirà sulle prestazioni? Voglio scaricare il maggior numero di query al database come possibile, e non esegue nulla nella memoria ...
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
})
});
La linea: .GroupJoin (_abilities, x => x.eProfile.ID , y => y.ID, (x, y) => new QuoteDTO
- _abilities è un IQueryable, ottengo la capacità di un utente, un insieme di oggetti
- la seconda parte (x , y) - qui y viene trasformato in un oggetto IEnumerable ...
var cLists = List<int>();
// questa collezione è popolato dal codice del client, permette di dire che // contiene 1,3,55 per amor di argomenti ...
var _abilities= repo.All<UserAbility>()
.Where(x => x.Status == Status.Active.ToString())
.Where(x => cLists.Contains(x.CompetencyID));
NOTA: il motivo per cui ho uso var è così che io possa trasformare in un oggetto di mio gradimento, stavo usando un sacco di tipi anonimi, prima sono stati inseriti gli oggetti DTO ...
Quale bit viene "trasformato in un oggetto IEnumerable"? E quali sono le abilità? –
È una query secondaria, ho aggiornato il codice sopra ... – Haroon
È '_abilities' un' IQueryable'? Qual è il tipo di dati di tutte le tue variabili? Per favore non usare 'var', non possiamo dedurre i tipi di variabile e il compilatore. – Greg