【问题标题】:Inserting a list within a list在列表中插入列表
【发布时间】:2014-04-26 00:12:26
【问题描述】:

到目前为止,我有两个列表,一个包含学生列表,另一个包含教室列表,我想做的是,在创建教室并创建学生列表之后,我将如何去关于将学生名单复制到教室。

假设我创建了一个名为“化学”的教室,一旦我输入学生列表,它就会添加到教室列表(元素 0)中,我将如何在教室中复制/放置该学生列表。

我知道这个问题是否有点含糊,基本上是为了让我可以动态创建教室,然后简单地将学生列表添加到我创建的任何教室。

感谢您的宝贵时间。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace P3_O_O_P
{
    public class Classroom
    {
        public List<Module> roomList;

        public Classroom()
        {
            roomList = new List<Module>();
        }

        public void createClassRoom(Module objMod)
        {
            Console.Write("\nEnter room name: ");
            objMod.ModuleName = Console.ReadLine();

            Console.Write("\nEnter a module I.D. code: ");
            objMod.ModuleID = Convert.ToDouble(Console.ReadLine());

            roomList.Add(new Module(objMod.ModuleName, objMod.ModuleID));
        }

        public void classList()
        {
            foreach (var module in roomList)
            {
                Console.Write("\nModule: " + module);
            }
        }
    }
}

public void addStudent(Student student, Module objMod, Classroom objClassroom, int mark)
    {
        objMod.registerList.Add(new Registration(student, mark));

        objMod.Enrol(student, Mark, objClassroom);
    }

【问题讨论】:

    标签: c#


    【解决方案1】:

    我会修改Classroom 类以包含List&lt;Student&gt;

    将 setter 设为私有,以便列表无法设置为 null 或实例化为 Classroom 类之外的新列表。公共 getter 允许您调用 Add()Remove() 等。

    public class Classroom
    {
        ...
        public List<Student> Students { get; private set; }
    
        public Classroom()
        {
            ...
            Students = new List<Student>();
        }
    
        ...
    }
    

    然后添加到您的方法内的列表中:

    public void addStudent(Student student, Module objMod, Classroom objClassroom, int mark)
    {
        ...
    
        objClassroom.Students.Add(student);
    }
    

    【讨论】:

    • 好答案,你打败了我。
    • addStudent 方法在不同的班级中,我忘了在上面为它添加班级标题,这是否允许我不仅创建一个教室,还插入一个学生列表?我需要能够使用模块名称和 ID 创建教室,然后简单地将学生添加到新创建的教室。
    【解决方案2】:

    也许像在数据库中那样做,例如创建一个关联类型的列表

    public class StudentsClassrooms
    {
        public int StudentId { get; set; }
        public int ClassroomId { get; set; }
    }
    
    public List<StudentsClassrooms> associations = new List<StudentsClassrooms>();
    

    然后您可以将它们连接在一起并使用 Linq 查询它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2017-07-11
      • 2020-12-12
      • 2020-12-23
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多