Estoy haciendo un código personalizado para un elemento web de SharePoint en C#. Específicamente, estoy haciendo una prueba, mi principal punto aquí es abordar la lista que contiene la pregunta, las opciones de respuesta y la respuesta correcta.C# más eficiente iteración de lista de SharePoint
En la última etapa del cuestionario necesito verificar las respuestas seleccionadas por el usuario contra la respuesta correcta en la lista. Actualmente, estoy haciendo lo siguiente para verificar si cada uno es correcto, lo cual supongo que no es muy eficiente porque itera a través de cada pregunta. ¿Hay algún método, específicamente para el bucle foreach de SPList, que sea más eficiente?
// 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....
¿Dónde se está ejecutando este código (receptor del evento? ¿Webpart?) ¿Está tratando de evitar calificar cada cuestionario cada vez? No estoy seguro de por qué está tratando de optimizar ... –
El cuestionario se ejecuta en un elemento web, y tengo dos inquietudes: 1. Cuando lanzamos el cuestionario, es probable que tenga un aumento tal vez unos cientos de personas lo tomen y quiero para minimizar los cuellos de botella. 2. Esta es la primera programación de ASP.NET que he hecho y dado que trabajo principalmente en PHP, los diseños y la programación de OO me desaniman. Además, he leído algunos blogs que dicen que este método de iteración a través de la lista es muy ineficiente. –
Bueno, si su lista de "Preguntas" contiene todas las preguntas que aparecen en el cuestionario y necesita validar la respuesta de cada usuario, entonces diría que un foreach está bien. –