Link Query:
var previousAudit = DbContext.AuditInspections
.AsNoTracking()
.Where(i => i.CreationDateTime >= financialYearStart.AddYears(-1) &&
i.CreationDateTime <= financialYearStart.AddDays(-1) &&
i.SiteModelId == inspectionData.SiteId &&
i.FlowStateModel.Name == StateEnums.AuditReportReleased)
.OrderByDescending(i => i.CreationDateTime)
.Select(i => new
{
i.Id,
i.AuditDateTime,
i.DeadlineDateTime,
Score = i.AuditInspectionQuestionModels
.GroupBy(q => new
{
q.AuditQuestionPriority,
q.AuditChoice
})
.Select(g => new
{
g.Key.AuditQuestionPriority,
g.Key.AuditChoice,
Count = g.Count()
})
.ToList()
})
.FirstOrDefault();
SQL Generated:
SELECT [t].[Id], [t].[AuditDateTime], [t].[DeadlineDateTime], [t].[Id0], [t0].[AuditQuestionPriority], [t0].[AuditChoice], [t0].[Count]
FROM (
SELECT TOP(1) [a].[Id], [a].[AuditDateTime], [a].[DeadlineDateTime], [f].[Id] AS [Id0], [a].[CreationDateTime]
FROM [AuditInspections] AS [a]
INNER JOIN [FlowStates] AS [f] ON [a].[FlowStateModelId] = [f].[Id]
WHERE [a].[CreationDateTime] >= @__AddYears_0 AND [a].[CreationDateTime] <= @__AddDays_1 AND [a].[SiteModelId] = @__inspectionData_SiteId_2 AND [f].[Name] = N'Audit Report Released'
ORDER BY [a].[CreationDateTime] DESC
) AS [t]
OUTER APPLY (
SELECT [a0].[AuditQuestionPriority], [a0].[AuditChoice], COUNT(*) AS [Count]
FROM [AuditInspectionQuestions] AS [a0]
WHERE [t].[Id] = [a0].[AuditInspectionModelId]
GROUP BY [a0].[AuditQuestionPriority], [a0].[AuditChoice]
) AS [t0]
ORDER BY [t].[CreationDateTime] DESC, [t].[Id], [t].[Id0], [t0].[AuditQuestionPriority]
Error:
An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Sequence contains more than one element.
at async Task Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync(IAsyncEnumerable asyncEnumerable, CancellationToken cancellationToken) x 2
at async Task ios_api.Controllers.Features.AuditModule.Inspection.AuditInspectionController.ShareAuditInspectionReports(int inspectionId, ReportRecipients reportRecipients) in C:/Usera/Project/msTest/ios_api/Controllers/Features/AuditModule/Inspection/AuditInspectionController.cs:line 2986
When I convert the linq query to IEnumerable<>
, the error is resolved:
var previousAudit = DbContext.AuditInspections
.AsNoTracking()
.Where(i => i.CreationDateTime >= financialYearStart.AddYears(-1) &&
i.CreationDateTime <= financialYearStart.AddDays(-1) &&
i.SiteModelId == inspectionData.SiteId &&
i.FlowStateModel.Name == StateEnums.AuditReportReleased)
.OrderByDescending(i => i.CreationDateTime)
.Include(auditInspectionModel => auditInspectionModel.AuditInspectionQuestionModels)
.ToList()
.Select(i => new
{
i.Id,
i.AuditDateTime,
i.DeadlineDateTime,
Score = i.AuditInspectionQuestionModels
.GroupBy(q => new
{
q.AuditQuestionPriority,
q.AuditChoice
})
.Select(g => new
{
g.Key.AuditQuestionPriority,
g.Key.AuditChoice,
Count = g.Count()
})
.ToList()
})
.FirstOrDefault();
or
simply just removing line:5
of the linq query, also eliminates the error:
i.SiteModelId == inspectionData.SiteId &&
inspectionData.SiteId
is an int
value and not a List<T>
, that I am sure of.
Can anyone explain why I am getting this error?
I am using .net 8.0