【问题标题】:How to structure classes to collect data, analyse data, summarize analysis for quick reference如何构造类来收集数据、分析数据、总结分析以供快速参考
【发布时间】:2014-09-07 05:09:15
【问题描述】:

堆栈溢出,

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

举例:

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

以下是我迄今为止的想法......这显然是不正确的: 收集数据似乎很简单:

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

导致:

  • 一个 Class 实例由一系列 Student 实例组成
  • 每个 Student 实例由一个列表和许多 Exam 实例组成
  • 每个考试实例由许多问题实例列表组成
  • 每个问题实例都有属性(例如问题响应(整数)、完成问题所用的时间 (TimeSpan))

返回收集问题的数据的频率是我遇到困难的地方:

  • 基准类
  • DataType 类(即 Question 类的属性。我不确定。)
  • 分发类

导致:

  • 一个由字典组成的 Benchmark 实例>> ???

使用 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();

在同一考试中对同一问题的回答列表:

  • 对于收集的每个数据类型(因此是 IEnumerable)
  • 获取dataType系列
  • 使用系列作为参数实例化新分布
  • 添加到字典。

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

问候 香农

【问题讨论】:

    标签: c# linq dictionary class-design


    【解决方案1】:

    我正试图围绕您的示例展开我的头脑...但这里有一个概念,它大致基于我用来执行复杂 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.
    }
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2021-01-24
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多