我有一个 linq 查询,我正在对其进行分组并检索第一个结果,我认为问题正在发生并且查询超时以获取更多数据:
这是查询:
var result = await base.GetAllPagedAndSortedQueryBuilder(input)
.Include(x => x.Person)
.WhereIf(input.EventId.HasValue, x => x.Race.EventId == input.EventId)
.GroupBy(x => new { x.JuryRoleId, x.PersonId }).Select(s => new RaceJuryDto
{
Id = s.First().Id,
Distance = s.Sum(r => Convert.ToDouble(r.Distance)).ToString(),
PersonId = s.First().Person.Guid,
Status = s.First().Status,
JuryRoleId = s.First().JuryRoleId,
JuryPersonId = s.First().Person.Id,
CountRacesJury = s.GroupBy(s => s.JuryRoleId).Count(),
AddressCity = s.First().Person.Address.City,
RaceIds = s.Select(s => s.RaceId).ToList(),
RaceJuryIds = s.Select(s => s.Id).ToList()
}).ToListAsync();
它在数据不多的情况下工作“正常”,但是当我们针对更大的数据集进行测试时会超时。我认为问题是在为每个属性调用 First() 时。
有人建议如何处理这个问题以及我如何改进查询吗?