2017-10-04 1 views
0

아래 내 모델입니다.이 소스 코드는 https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/build-a-single-page-application-spa-with-aspnet-web-api-and-angularjs에서 다운로드했습니다. 지침을 따르고 있습니다.람다 쿼리를 사용하여 메서드 그룹을 할당 할 때 비동기 메서드가 트리거됩니다.

public class TriviaQuestion 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    [Required] 
    public string Title { get; set; } 

    public virtual List<TriviaOption> Options { get; set; } 
} 


    public class TriviaOption 
    { 
     [Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 

     [Required] 
     public string Title { get; set; } 

     [Column(Order = 0), ForeignKey("TriviaQuestion")] 
     public int QuestionId { get; set; } 

     [JsonIgnore] 
     public virtual TriviaQuestion TriviaQuestion { get; set; } 

     [JsonIgnore] 
     public bool IsCorrect { get; set; } 
    } 

여기서 내가 말하는 오류가 점점 오전 내 컨트롤러입니다 "q.Count이 방법 그룹 익명 형식의 때에 프로퍼티를 할당 할 수 있습니다."

private async Task<TriviaQuestion> NextQuestionAsync(string userId) 
     { 
      var lastQuestionId = await this.db.TriviaAnswers 
       .Where(a => a.UserId == userId) 
       .GroupBy(a => a.QuestionId) 
       .Select(g => new { QuestionId = g.Key, Count = g.Count() }) 
       .OrderByDescending(q => new { **q.Count**, QuestionId = q.QuestionId }) 
       .Select(q => q.QuestionId) 
       .FirstOrDefaultAsync(); 

      var questionsCount = await this.db.TriviaQuestions.CountAsync(); 

      var nextQuestionId = (lastQuestionId % questionsCount) + 1; 
      return await this.db.TriviaQuestions.FindAsync(CancellationToken.None, nextQuestionId); 
     } 

답변

0

q.Count에 대한 올바른 이름이 아닙니다 익명 형식 필드, 당신은 당신은 또한 OrderByDecending과 ThenByDecending에 떨어져 ORDERBY을 분할 할 수

.OrderByDescending(q => new { Count = q.Count, QuestionId = q.QuestionId }) 

QuestionId

위해했던 것처럼 이름을 지정해야합니다.

.OrderByDescending(q => q.Count) 
.ThenByDescending(q => q.QuestionId) 

IQueryable 개체에 대해 작업하는 경우 서버에 대한보다 나은 쿼리가 생성 될 수 있습니다.