2016-11-10 2 views
0

퀴즈를 채점하는 방법을 만드는 중입니다. 퀴즈 질문에 하나의 정답 만 있으면 잘 작동하지만 여러 개의 정답을 처리하는 데 어려움을 겪고 있습니다.목록을 반복하고 여러 조건과 일치

먼저 현재 질문에 몇 개의 정답이 있는지 확인합니다. 1보다 많은 경우 사용자가 대답하는지 확인하는 방법이 필요합니다. 정답과 완벽하게 일치해야합니다.

따라서 정답이 2 개인 질문이 있고 사용자가 그 중 하나만 체크 인하면 점수를받지 못합니다.

정답 인 응답의 수가 정답과 일치하는지 확인하는 방법에 대한 아이디어가 있습니까?

나는 LINQ가 여기에 잘 어울릴 것이라고 생각하지만, 나는 그것에 대해 완전히 멍청하다. 어쩌면 새로운 목록에 모든 정답을 추가하고 .Contains와 일치하는 것이 해결책일까요?

List<Question> 

Question-Class 
- List<Answers> 
    -(string) AnswerText 
    -(bool) CorrectAnswer 

- List<string> UserAnswerToQuestionText 

의사 코드 :

클래스는 다음과 같다

if (currentquestion has more than one correct answer) 
if (UserAnswerText == correctAnswerX && UserAnswerText == correctAnswerY) 

nrofCorrectAnswers++; 

답변

0

당신은 더 나은 대답 코드를 게재 할 수 있습니까?

는 나는 이런 식으로 뭔가 할 수 있다고 생각 :

int correctAnswersCount = yourlist.Count(answer => answer.Contais(UserAnswerText)); 
1

는 LINQ이 작업을 수행 할 수 있어야한다

그래서이 아래로 당신이 당신의 질문과 답변을 모델링 방법.

하는 질문에 대한 클래스를 확인하고이 같은 답변에 뭔가 클래스를 확인 질문 클래스는 답변의 목록을 포함 할 수있다 :
public class Question 
{ 
    public int QuestionId {get; set;} 
    public string QuestionText {get; set;} 
    public List<Answer> Answers {get; set; 
} 

public class Answer 
{ 
    public int AnswerId {get; set;} 
    public int QuestionId {get; set;} 
    public string AnswerText {get;set;} 
} 

그래서 당신은 질문과 답변 사이의 관계를 가지고있다. 그들이 대답에 입력 한 경우이 질문에 대한 고정 답변 (예 : 객관식)을 가정

var userAnswers = new List(Answer); 
//populate your useranswers here 

foreach(var question in Questions) 
{ 
    var answersForQuestion = question.Answers.Select(a=>a.QuestionId == question.Id); 
    if (userAnswers.FindAll(ua => ua.QuestionId == questionId).Length == question.Answers.Count()) 
    { 
     //correct amount of answers. check for actual answers 
     if (userAnswers.Any(ua => question.Answers.Contains(a=>a.Id == ua.Id)) 
    //correct answers made 
    { 
} 

+0

가 답장을 보내 주셔서 감사합니다 더 까다로운 일이 될 수도 있습니다 : 다음은 않습니다 주어진 대답에 대한 답을 확인 . 이것은 확실히 앞으로 나아갈 것입니다! :-) 내 클래스가 이렇게 보일 것입니다. 사용자 응답이 문자열 목록에 있으므로 linq을 사용하여 반복 할 수 있습니까? –

+0

예, 텍스트의 ID 만 변경할 수 있습니다. 문자열이 변경되기 때문에 형식 및 유효성 검사를 수행해야합니다. –

관련 문제