1
考慮以下查詢(或直接):LINQ延遲執行
List<GetMultipleLookupListsOutput> data = await _masterListTranslationsRepository
.GetAll() //<- it returns IQueriable
.GroupBy(q => q.ListLabelID)
.Select(q => q
.OrderByDescending(w=>w.ISOLanguageCode == isoLanguageCode)
.ThenByDescending(w=>w.ISOLanguageCode == "en-US"))
.Select(q => q.FirstOrDefault()) // DB call ?
.GroupBy(q=>q.ListLabels.Lists.ListName)
.Select(q => new GetMultipleLookupListsOutput
{
ListName = q.Key,
LookupLists = q
.OrderByDescending(w => w.ISOLanguageCode == isoLanguageCode)
.ThenByDescending(w => w.ISOLanguageCode == "en-US")
.Select(w => new RegionalFeatureDto
{
Id = w.Id,
Label = w.BaseValue
})
.ToList() // DB call ?
})
.ToListAsync();
多少數據庫調用它會產生?
GetAll()
方法返回IQueryable
,但確實FirstOrDefault()
和ToList()
在第二和第三選擇語句會觸發數據庫調用?
任何幫助將不勝感激。
對不起,刪除了我的答案,因爲我意識到它比我想象的要複雜一點。但我想你可以通過簡單地運行代碼並檢查數據庫日誌或調試代碼來得到答案。 –
我同意@RenéVogt,對我來說實際測試您的具體查詢並不容易,但正如我在回答中所述,日誌應該告訴您有多少個調用與查詢相關聯 – chandler