【问题标题】:Merge two list of list objects合并两个列表对象列表
【发布时间】:2018-12-20 07:45:21
【问题描述】:

我有两个学校班级,我想要两个将这两个列表合并为一个列表。

public class School
{
    public string Name { get; set; }
    public List<ClassRoom> ClassRooms { get; set; }
}
public class ClassRoom
{
    public int ClassRoomID { get; set; }
    public string GradeName { get; set; }
    public List<Student> Students { get; set; }
    public List<Teacher> Teachers { get; set; }
}
public class Teacher
{
    public int TeacherID { get; set; }
    public string Name { get; set; }
    public List<Adress> Adresses { get; set; }
}
public class Student
{
    public int StudentID { get; set; }
    public string Name { get; set; }
    public List<Adress> Adresses { get; set; }
}
public class Adress
{
    public string DetailedAddress { get; set; }
    public string ZipCode { get; set; }
}

这是我尝试过的

    School school1 = new School();
    School school2 = new School();

    school1.Name = "new NAme";
    school1.ClassRooms.AddRange(school2.ClassRooms);

我面临的问题是内部列表未正确添加。 合并列表没有 列出学生 列出教师

这两个是空的。

【问题讨论】:

  • “合并的列表没有 List Students List Teachers” - 您实际上是在将 school2.ClassRooms 的引用添加到 school1.ClassRooms 中。您不是在复制对象,只是将引用复制到同一个对象。因此,您的问题不是关于合并列表,而是关于为什么school2's ClassRooms 没有教师/学生的任何条目。而且,不幸的是,您没有向我们展示足够的代码。也许您可以提供minimal reproducible example
  • 您可以添加示例数据和您的预期结果吗?
  • @John 问题解决了,好像是内存问题;我重新启动了机器,它神奇地工作了

标签: c# linq linq-to-sql


【解决方案1】:

您必须启动所有列表。

School school1 = new School();
school1.ClassRooms = new List<ClassRoom>();

school1.ClassRooms.Students = new List<Student>();
school1.ClassRooms.Students.Adresses = new List<Adresses>();

school1.ClassRooms.Teachers = new List<Teachers>();
school1.ClassRooms.Teachers.Adresses = new List<Adresses>();

你也必须初始化学校 2。然后就可以添加了。否则它将变为空。最好使用构造函数来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 2018-04-21
    • 2021-09-04
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多