Я делаю собственный код для веб-части SharePoint на C #. В частности, я провожу викторину, и моя основная мысль здесь касается списка, содержащего вопрос, варианты ответа и правильный ответ.
На последнем этапе викторины мне нужно сравнить ответы, выбранные пользователем, с правильный ответ в списке. В настоящее время я делаю следующее, чтобы проверить правильность каждого из них, который, как я полагаю, не очень эффективен, потому что он повторяет каждый вопрос. Есть ли метод, специально для цикла foreach SPList, который был бы более эффективным?
// 1. Store questions and answers in class
List<submittedAnswers> answeredQuestions = new List<submittedAnswers>();
// 2. From POST pull answered question IDs and answer IDs (which correspond to the question primary key and answer choice number both stored in the list)
// INSERT BEAUTFIUL AND EFFICIENT WHILE LOOP HERE
// 3. Loop through each question is list, if question was given, test if correct/incorrect
using (SPWeb myWeb = mySite.OpenWeb())
{
SPList answerList = myWeb.Lists[questionList];
foreach (SPListItem quizEntry in answerList.Items)
{
int pullAnswerId = int.Parse(quizEntry["Answer"].ToString()); // Pull answer number from list
int pullQuestionId = int.Parse(quizEntry["ID"].ToString()); // Pull primary key of question
submittedAnswers result = answeredQuestions.Find(delegate(submittedAnswers e) { return e.questionId == int.Parse(quizEntry["ID"].ToString()); });
if (result != null)
{
if (result.responseId != pullAnswerId) // If the response was different from the answer
incorrectAnswers++;
else
correctAnswers++;
}
}
}
// C# quiz grading magic here....