【发布时间】:2016-06-28 14:53:35
【问题描述】:
给定以下查询:
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,但是第二和第三个select语句中的FirstOrDefault()和ToList()会触发数据库调用吗?
任何帮助将不胜感激。
【问题讨论】:
-
对不起,删除了我的答案,因为我意识到它比我想象的要复杂一些。但我想你可以通过简单地运行代码并检查数据库日志或调试代码来得到答案。
-
标签: c# linq entity-framework-6