【问题标题】:Parse and pivot student assignment data in c#在 C# 中解析和透视学生作业数据
【发布时间】:2010-10-19 22:06:56
【问题描述】:

我有一个学生/作业对列表,通过平面文件进入我的应用程序到一个 List 对象中,我想根据作业列表验证这些作业名称,我必须查看哪个学生做了什么分配(如果有的话)。

所以 - 我有一个学生列表、一个学生/作业对列表和一个作业列表。

我想创建如下输出:

1.(标题)--学生姓名--作业一--作业二 2.(详细)--约翰·史密斯----

我怎样才能做到这一点?

到目前为止我所拥有的: // HACCStudentBlogs 将学生列表存储在字典中 //

Dictionary<string, string> studentBlogs = new Dictionary<string, string>();
            foreach (JObject o in root)
            {
                createDate = (string)o["createdDate"];
                studentName = (string)d[(string)o["contributorName"]];
                submittedStudents.Add(studentName);
                title=(string)o["title"];

                    if (HACCstudentBlogs.ContainsKey(studentName))
                    {

                        HACCstudentBlogs[studentName] += "\t" + title.ToUpper();
                    }
                    else
                    {



                    }




            }

【问题讨论】:

  • 一点源代码会很有用。我建议使用 LINQ。
  • 学生和作业?这似乎是家庭作业,应该这样标记。
  • 情绪低落的男孩 -- 我在学术界工作,并有一个学生评分系统作为我工作的一部分。

标签: c# arrays list dictionary


【解决方案1】:
  1. 由于您希望每个学生一行,因此最简单的方法是遍历学生列表并为每个学生做一些事情。

  2. 在这种情况下,“某事”意味着我们需要组装一行输出。

  3. 输出的每一行都将包含学生的信息,然后每个作业都需要一个片段。所以在学生的循环中,将有一个作业的循环。

  4. 在作业循环中,我们需要查找并查看是否有该学生和作业的配对。如果是这样,我们会吐出“完成”。否则,“不完整”。

因此,构建程序的合理方法是这样的:

// print some header information
foreach (var student in studentList)
{
    Display(student.Name);
    foreach (var assignment in assignmentList)
    {
       if (Exists(student, assignment, studentAssignmentPairs))
           Display("<complete>");
       else
           Display("<incomplete>");
    }
    // newline
}

增加了一些可以很好地格式化它的天赋。

足够开始了吗?

【讨论】:

    【解决方案2】:

    我们真的需要知道列表对象是什么样子的

    但是在 Linq .Distint() 上使用 foreach 将是一个很好的起点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      相关资源
      最近更新 更多