我正在訪問遠程數據源,發現組聯接導致IQueryable查詢轉換爲IEnumerable,問題:這會影響性能嗎?我想卸載儘可能多的查詢到數據庫成爲可能,而不是執行內存什麼...組連接導致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)=>新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對象之前,我可以變成我喜歡的對象,我用了很多匿名類型的...
哪一位被「轉換成IEnumerable」?什麼是可用性? –
它的一個子查詢,我已經更新了上面的代碼... – Haroon
'_abilities'是一個'IQueryable'嗎?你所有變量的數據類型是什麼?請不要使用'var',我們不能推斷變量類型和編譯器。 – Greg