title: LINQ Compare two arrays and return the position and values that do not match
body: <p>In grading student exams there are  two arrays of characters which represent correct questions answers / student answers. The goal is grade and  identify the missed questions and to  display the question number and  correct answer answer and student choice.</p>
  
  <p>The code below loops through two arrays and identifies the missed questions. I would like to use LINQ to refactor the existing code. I have looked at the .except, .union and .intersect operators but don't feel they are the right fit for the  task at hand.  What standard query operators are reasonable to use to calculate the correct results and what would this code look like?  </p>
  
  <pre><code>void Main()
  {
      char[] correctAnswer ="ACBCDABCABDDCCBA".ToCharArray();
      char[] studentsChoice = "ABBCDDBCAADDACCA".ToCharArray();
  
      for( int x = 0; x&lt;=correctAnswer.Count()-1;x++)
      {
          if( ! correctAnswer[x].Equals(studentsChoice[x]))
          {
              Console.WriteLine(String.Format("Question:{0} correctAnswer:{1}  StudentsChoice:{2}",x,  correctAnswer[x],studentsChoice[x]));
          }
  }
  </code></pre>
  
  <p><strong>Output</strong></p>
  
  <pre><code>    Question:1 AnswerKey:C Correct:B
      Question:5 AnswerKey:A Correct:D
      Question:9 AnswerKey:B Correct:A
      Question:12 AnswerKey:C Correct:A
      Question:14 AnswerKey:B Correct:C
  </code></pre>