private static QuestionnaireResults ProcessItems(List <QuestionnaireResponse.ItemComponent> AnswerList, List <QuestionnaireResponse.ItemComponent> ResponseList, QuestionnaireResults Results)
        {
            foreach (var AItem in AnswerList)
            {
                if (ResponseList != null)
                {
                    var RItem = ResponseList.SingleOrDefault(x => x.LinkId == AItem.LinkId);
                    if (AItem.Answer != null && AItem.Answer.Count > 0)
                    {
                        var QuestionItem = new QuestionnaireResults.QuestionItem();
                        Results.QuestionItemList.Add(QuestionItem);
                        QuestionItem.LinkId = AItem.LinkId;
                        QuestionItem.Text   = AItem.Text;

                        if (RItem.Answer != null)
                        {
                            for (int i = 0; i < AItem.Answer.Count; i++)
                            {
                                if (AItem.Answer.Count >= i)
                                {
                                    if (RItem.Answer[i].Value.ToString() == AItem.Answer[i].Value.ToString())
                                    {
                                        QuestionItem.Answer    = RItem.Answer[i].Value.ToString();
                                        QuestionItem.IsCorrect = true;
                                    }
                                    else
                                    {
                                        QuestionItem.Answer    = RItem.Answer[i].Value.ToString();
                                        QuestionItem.IsCorrect = false;
                                    }
                                }
                            }
                        }
                        else
                        {
                            QuestionItem.Answer    = string.Empty;
                            QuestionItem.IsCorrect = false;
                        }
                    }

                    if (AItem.Item != null && AItem.Item.Count > 0)
                    {
                        if (RItem != null && RItem.Item != null)
                        {
                            return(ProcessItems(AItem.Item, RItem.Item, Results));
                        }
                        else
                        {
                            return(ProcessItems(AItem.Item, null, Results));
                        }
                    }
                }
                else
                {
                    if (AItem.Answer != null)
                    {
                        var QuestionItem = new QuestionnaireResults.QuestionItem();
                        Results.QuestionItemList.Add(QuestionItem);
                        QuestionItem.LinkId    = AItem.LinkId;
                        QuestionItem.Text      = AItem.Text;
                        QuestionItem.Answer    = string.Empty;
                        QuestionItem.IsCorrect = false;
                    }
                }

                if (AItem.Item != null && AItem.Item.Count > 0)
                {
                    return(ProcessItems(AItem.Item, null, Results));
                }
            }
            return(Results);
        }
        public static QuestionnaireResults Check(QuestionnaireResponse Answers, QuestionnaireResponse Response)
        {
            var QuestionnaireResults = new QuestionnaireResults();

            return(ProcessItems(Answers.Item, Response.Item, QuestionnaireResults));
        }