示例#1
0
        /// <summary>
        /// 转换数据为<see cref="UserExamQuestionSummary"/>类型数据
        /// </summary>
        /// <param name="results"></param>
        /// <returns></returns>
        private IEnumerable <UserExamQuestionSummary> ConvertToQuestionSummary(IEnumerable <UserExamQuestionResult> results)
        {
            if (results == null)
            {
                yield break;
            }

            //题目ID集合
            var questionIds = results.Select(p => p.QuestionId).ToArray();
            //获取各题的正确答案
            var rightAnswers = QuestionsAccessor.GetAnswersFor(questionIds);

            //循环处理数据类型,并添加上正确答案
            foreach (var item in results)
            {
                //本题的正确答案(或参考答案)
                var answerJsonData = rightAnswers.ContainsKey(item.QuestionId) ? rightAnswers[item.QuestionId] : string.Empty;

                //反序列化出答案(或解析)内容
                var deserContext = new AnswerDeserializeContext(item.Type);
                var answers      = deserContext.Deserialize(answerJsonData);

                //过滤出正确的答案选项编号(或解析内容)
                var rightCodeArray = RightAnswersFilter(answers, item.Type);

                //题目摘要数据对象
                var summary = new UserExamQuestionSummary(item);
                summary.RightAnswer = rightCodeArray != null?string.Join(",", rightCodeArray) : string.Empty;                  //将多个正确答案(或答案解析内容)用英文逗号分隔

                yield return(summary);
            }
        }
示例#2
0
        /// <summary>
        /// 将题目答案项反序化为对应的数据对象
        /// </summary>
        /// <param name="answers"></param>
        /// <param name="questionType"></param>
        /// <returns></returns>
        public static QuestionAnswer DeserializeAnswers(string answers, int questionType)
        {
            var context = new AnswerDeserializeContext(questionType);

            return(context.Deserialize(answers));
        }