我有以下Entity Framework Core查询:
IQueryable<Product> products = context.Products;
var maximums = new MaximumModel {
PA = await products.MaxAsync(x => x.Composition.PA)
PB = await products.MaxAsync(x => x.Composition.PB)
PC = await products.MaxAsync(x => x.Composition.PC)
PD = await products.MaxAsync(x => x.Composition.PD)
// Other 36 properties ...
}
这将执行40个查询,每个查询一个...
是否可以仅执行一个查询?
答案 0 :(得分:1)
我尚未使用EF异步版本对此进行过测试,但是LINQ to SQL解决方案是使用GroupBy
中的单例组将查询合并为一个查询:
var maximums = await products.GroupBy(p => 1)
.Select(pg => new MaximumModel {
PA = pg.Max(x => x.Composition.PA),
PB = pg.Max(x => x.Composition.PB),
PC = pg.Max(x => x.Composition.PC),
PD = pg.Max(x => x.Composition.PD),
// Other 36 properties ...
}).FirstAsync();