如何构建类来收集数据,分析数据,总结分析以便快速参考

时间:2014-09-07 05:09:15

标签: c# linq dictionary class-design

#1,

如何构建代码以收集外部集合中的数据集合,并按数据类型(即数据集合中的每种数据类型)返回频率分布?我知道这个问题必须多次解决。但是,我找不到答案。任何指导都将不胜感激。

举例来说:

  • 你有一个有30名学生的教室,
  • 每个学生完成考试
  • 每项考试都包含许多问题
  • 收集每个问题的数据(例如问题回复(整数),完成问题所花费的时间(TimeSpan))
  • 对于课堂,对于每个考试(例如问题1),对于每个问题(例如问题1),对于每个收集的数据类型(例如问题回答),您要检索频率分布(例如10个回复) = 1,15响应= 2,5响应= 3,0响应= 4)。

以下是我的想法......这显然是不正确的: 收集数据似乎直接用:

  • 班级
  • 学生班
  • 考试班
  • 问题类:IEnumerable(如果整数和TimeSpan值转换为double)

导致:

  • 一个包含许多学生实例列表的类实例
  • 每个学生实例包含许多考试实例列表
  • 每个考试实例由列表组成许多问题实例
  • 每个具有属性的问题实例(例如问题响应(整数),完成问题所花费的时间(TimeSpan))

返回问题所收集数据的频率是我解开的地方:

  • 基准等级
  • DataType Class(即Question类中的属性。我不确定这一点。)
  • 分发类

导致:

  • 一个Benchmark实例,由一个Dictionary>>组成。 ???

使用LINQ,依次抓住每个学生的每个问题:

List<Exam> Exams = from student in classroom
    where student.examNumber == "x"
    select student.exam.ToList();

List<Question> Questions = from question in exams
    where question.Number == "x"
    select question.ToList();

在同一个考试中列出对同一个问题的回复:

  • 收集的每个dataType(因此IEnumerable)
  • 获取dataType系列
  • 使用series作为参数实例化新分发
  • 添加到词典。

我知道这个解决方案不完整且不正确。再次,任何指导将不胜感激。

此致 香农

1 个答案:

答案 0 :(得分:0)

我试图绕过你的榜样......但是这里的概念基于真实的代码我用来做复杂的LINQ查询报告...

   var linqAnswers = from question in Questions
                            group question by question.Answer into grpAnswer
                            select new
                            {
                                answer = grpAnswer.Key,
                                count = grpAnswer.Count(),
                                data = ProcessAnswerFrequencyData(Questions, grpAnswer)
                            };


 protected IEnumerable<QuestionAnswerChartPoint> ProcessAnswerFrequencyData(IEnumerable<Question> list, IGrouping<string, Question> grp)
{
    //Do more processing on the group and return a reporting list.
}

该代码是临时的,未经测试的,无效的,概念性的垃圾......但也许它会让你朝着正确的方向前进。