Estoy accediendo a una fuente de datos remota y encontré que una unión de grupo provoca que una consulta IQueryable se transforme en una pregunta IEnumerable,La unión de grupo hace que IQueryable se convierta en IEnumerable, ¿por qué?
: ¿afectará esto al rendimiento? Quiero sacar datos tanto de la consulta a la base de datos como sea posible, y no ejecutar nada en la 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 línea: .GroupJoin (_abilities, x => x.eProfile.ID , y => y.ID, (x, y) => nuevo QuoteDTO
- _abilities es un IQueryable, consigo la capacidad de un usuario, una colección de objetos
- la segunda parte (x , y) - aquí y se transforma en un IEnumerable ...
var cLists = List<int>();
// está poblada esta colección desde el código de cliente, digamos que // contiene 1,3,55 para el bien de los argumentos ...
var _abilities= repo.All<UserAbility>()
.Where(x => x.Status == Status.Active.ToString())
.Where(x => cLists.Contains(x.CompetencyID));
NOTA: la razón por la que var uso es para que pueda transformarse en un objeto de mi gusto, yo estaba usando una gran cantidad de tipos anónimos antes de que se insertan los objetos DTO ...
¿Qué bit está siendo "transformado en un Enumerable"? ¿Y qué es _capacidades? –
Es una sub consulta, he actualizado el código anterior ... – Haroon
¿'_abilities' an' IQueryable'? ¿Cuál es el tipo de datos de todas sus variables? Por favor, no use 'var', no podemos inferir los tipos de variables tan bien como el compilador. – Greg