linq一對多錯誤記錄
阿新 • • 發佈:2020-07-27
錯誤日誌
ERROR 2020-07-27 09:14:41,870 [4 ] EvaluationSystem.CustomeExceptionFilter - variable 'list' of type 'System.Collections.Generic.IEnumerable`1[EvaluationSystem.EntityDesign.SocietyScore]' referenced from scope '', but it is not defined
System.InvalidOperationException: variable 'list' of type 'System.Collections.Generic.IEnumerable`1[EvaluationSystem.EntityDesign.SocietyScore]' referenced from scope '', but it is not defined
at System.Linq.Expressions.Compiler.VariableBinder.VisitParameter(ParameterExpression node)
at System.Linq.Expressions.Compiler.VariableBinder.Visit(Expression node)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.NewExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.Compiler.VariableBinder.Visit(Expression node)
at System.Linq.Expressions.ExpressionVisitor.Visit(ReadOnlyCollection`1 nodes)
at System.Linq.Expressions.Compiler.VariableBinder.Visit(Expression node)
at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda)
at System.Linq.Expressions.LambdaExpression.Compile()
at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.VisitShapedQueryExpression(ShapedQueryExpression shapedQueryExpression)
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.VisitExtension(Expression extensionExpression)
at System.Linq.Expressions.Expression.Accept(ExpressionVisitor visitor)
at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func`1 compiler)
at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at EvaluationSystem.SocietyTeam.SocietyTeamAppService.SheTuanPaiMing(SheTuanPaiMingInput input) in E:\Workspaces\華髮工作空間\路北區智慧校園平臺\aspnet-core\src\EvaluationSystem.Application\SocietyTeam\SocietyTeamAppService.cs:line 119
at lambda_method(Closure , Object )
at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
程式碼
/// <summary> /// 社團排名 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<PagedResultDto<SheTuanPaiMingList>> SheTuanPaiMing(SheTuanPaiMingInput input) { var school = _schoolInformationRepository.GetAll(); if (input.CantonId.HasValue) { school = school.Where(x => x.CanTonId == input.CantonId); } if (input.SchoolId.HasValue) { school = school.Where(x => x.Id == input.SchoolId); } var query = from societyTeam in _societyTeamRepository.GetAll() join societyScore in _societyScoreRepository.GetAll() on societyTeam.Id equals societyScore.SocietyId into list from d in list.DefaultIfEmpty() join schoolInformation in school on societyTeam.SchoolId equals schoolInformation.Id join schoolTerm in _schoolTermRepository.GetAll() on societyTeam.SchoolTermId equals schoolTerm.Id where (!input.TermId.HasValue || societyTeam.SchoolTermId == input.TermId) select new { societyTeam, schoolInformation, schoolTerm, list }; var totalCount = await query.CountAsync(); var items = await query.OrderBy(x=>x.societyTeam.SocietyTeamName).PageBy(input).ToListAsync(); return new PagedResultDto<SheTuanPaiMingList>(totalCount, items.Select(item => { var dto = new SheTuanPaiMingList(); dto.SchoolTermId = item.schoolTerm.Id; dto.SchoolTermName = item.schoolTerm.TermName; dto.SchoolId = item.schoolInformation.Id; dto.SchoolName = item.schoolInformation.SchoolName; dto.SocietyTeamName = item.societyTeam.SocietyTeamName; dto.SocietyTeamId = item.societyTeam.Id; dto.TotailScore = item.list.Select(x => x.Score).Sum(); dto.Score.AddRange(item.list.Select(x => { var d = new ScoreTemp(); d.Score = x.Score; d.IndexName = x.IndexName; return d; }).ToList()); dto.CreationTime = item.societyTeam.CreationTime; dto.Memo = item.societyTeam.Mark; return dto; }).ToList()); }