C# 虽然使用了TOLIST,但无法翻译LINQ表达式

C# 虽然使用了TOLIST,但无法翻译LINQ表达式,c#,entity-framework,linq,C#,Entity Framework,Linq,我有以下代码,首先创建一个列表对象assessmentItems,然后在LINQ中使用它来获取CurrentScore List<AssessmentItem> assessmentItems = _context.AssessmentItems .Include(ai => ai.Assessment).ThenInclude(assess => assess.Evaluator) .Where(ai =>

我有以下代码,首先创建一个列表对象
assessmentItems
,然后在LINQ中使用它来获取
CurrentScore

List<AssessmentItem> assessmentItems =
    _context.AssessmentItems
            .Include(ai => ai.Assessment).ThenInclude(assess => assess.Evaluator)
            .Where(ai => ai.IsActive &&
                         ai.Assessment.PeerReviewAssignmentId == peerReviewAssignmentId &&
                         ai.Assessment.RubricId == rubricId).ToList();


List<RubricDTO> resultToReturn = _context.Rubrics
                .Include(r => r.RubricItemCategories)
                .Where(r => r.Id == rubricId)
                .Select(r => new RubricDTO
                {
                    Ranking = r.Ranking,                       
                    Description = r.Description,
                    RubricItemCategories = r.RubricItemCategories.Select(ric => new RubricItemCategoryDTO
                    {
                        Id = ric.Id,
                        Description = ric.Description,
                        RubricItems = ric.RubricItems.Select(ri => new RubricItemDTO
                        {
                            Id = ri.Id,
                            Title = ri.Title,                     
                          
                            CurrentScore = assessmentItems.Count > 0 ? assessmentItems
                                                  .Where(aitem2 => aitem2.RubricItemId == ri.Id && aitem2.Assessment.EvaluatorId == userId)
                                                  //.Take(1)
                                                  .Select(s => s.CurrentScore)
                                                  .FirstOrDefault() : 0,

                        })
                    }).OrderBy(ric => ric.Order).ToList()
                }).ToList();

更多信息


你知道为什么会发生这种情况吗?

让我帮助你简化你的查询。不需要包含,因为您有自定义投影。如果为子查询元素添加
ToList
,则它将不可翻译。如果需要可翻译查询,请使用IQueryable

var assessmentItems=\u context.assessmentItems
.其中(ai=>ai.IsActive&&
ai.Assessment.PeerReviewAssignmentId==PeerReviewAssignmentId&&
ai.Assessment.RubricId==RubricId);
var resultToReturn=\u context.Rubrics
其中(r=>r.Id==rubricId)
.选择(r=>new RubricDTO
{
排名=r.排名,
描述=r.描述,
RubricItemCategories=r.RubricItemCategories.Select(ric=>new-rubricitemcategoridto
{
Id=ric.Id,
描述=ric.描述,
RubricItems=ric.RubricItems.Select(ri=>newrubricitemdto
{
Id=ri.Id,
Title=ri.Title,
CurrentScore=评估项目
.Where(aitem2=>aitem2.RubricItemId==ri.Id&&aitem2.Assessment.EvaluatorId==userId)
.选择(s=>s.CurrentScore)
.FirstOrDefault(),
})
}).OrderBy(ric=>ric.Order).ToList()
}).ToList();
而是因为使用了
ToList