Я сохраняю результаты опроса в таблице, и мне нужно узнать последние идентификаторы ответов на все вопросы для определенного опроса для пользователя (в каждой строке есть id, quizid, questionid, answerid, username и datecompleted).
Я заставил это работать, но это так уродливо, что я подумал, что попросил бы помочь оптимизировать это.Я начинаю свою новогоднюю резолюцию рано, напишите код лучшего качества!:) Так что если кому-то захочется рассказать мне, как его оптимизировать, это было бы очень признательно!
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, дайте мне знать, если вам нужна дополнительная информация.
Спасибо,
Аннели