퀴즈 결과를 테이블에 저장하고 있으며 사용자의 특정 퀴즈에 대한 모든 질문에 최신 답변 ID를 찾아야합니다 (각 행에는 id, quizid, questionid, answerid, username 및 datecompleted).최신 결과를 얻으려면 subselect를 사용하여 linq를 subselect로 최적화하십시오.
나는 그것을 만들었지 만 너무 못생긴 생각으로 나는 그것을 최적화 할 도움을 요청했다. 나는 새로운 해를 일찍 시작하고, 더 나은 품질의 코드를 작성한다. :) 그래서 만약 누군가가 크게 나를 평가할 수있는 그것을 최적화하는 방법을 말하는 느낌!
public List<QuestionResult> GetLatestResult(Guid QuizID, string UserName)
{
List<QuestionResult> quizResult = new List<QuestionResult>();
// first get all question ids for that quiz
var questionIDs = (from q in db.QuizResults
where (q.QuizId == QuizID && q.UserName == UserName)
select q.QuestionId).Distinct();
// then get the most recent answer id for those questions
var results = from r in questionIDs
select (from q in db.QuizResults
where q.QuizId == QuizID
&& q.UserName == UserName
&& q.QuestionId == r
orderby q.DateCompleted descending
select q).Take(1);
foreach (var item in results)
{
foreach (var qr in item)
{
QuestionResult result = new QuestionResult();
result.QuestionId = qr.QuestionId;
result.AnswerId = qr.AnswerId;
quizResult.Add(result);
}
}
return quizResult;
}
자세한 내용이 필요한 경우 알려주십시오. C#, linq to sql.
감사합니다,
Annelie
감사합니다. 이것은 정말 훌륭하고 간결합니다! 그것이 그것을 위해 그것을 던져야했다, 그렇지 않으면 대접을 움직이게한다. – annelie