C# 用于以树方式排列的数据的自定义类

C# 用于以树方式排列的数据的自定义类,c#,C#,我正在尝试创建一个自定义类,该类以以下方式排列数据:- Departments Section 1 Person 1 Person 2 Section 2 ... etc 下面是我编写的代码,但它没有按照我的想法工作:- public class Sections { private List<Section> _Section =

我正在尝试创建一个自定义类,该类以以下方式排列数据:-

Departments 
        Section 1
                 Person 1
                 Person 2
        Section 2
        ... etc
下面是我编写的代码,但它没有按照我的想法工作:-

    public class Sections
    {
        private List<Section> _Section = new List<Section>();
        public List<Section> Section
        {
            get
            {
                return this._Section;
            }
        }
    }
    //Innehåller alla detailer om varje sektion
    public class Section
    {
        public string Name { get; set; }
        public int Capacity { get; set; }
        public int MinimumStaffing { get; set; }
        public int IdealStaffing { get; set; }

        private List<Person> _Employee = new List<Person>();
        public List<Person> Employee
        {
            get
            {
                return this._Employee;
            }
            set { }
        }
    }
    //Innehåller alla info. om en enskild personal
    public class Person
    {
        public string Name { get; set; }
        public string Email { get; set; }
        public int TelephoneNo { get; set; }
        public int Pager { get; set; }
        public int HomePhone { get; set; }
        public string Title { get; set; }
    }
问题在于else语句返回0计数,即它添加Name属性,但不添加员工列表

你知道如何克服这个吗


很抱歉打扰您,请提前感谢。

类的
部分中
Employee
属性的属性设置器是空的,因此当您这样调用
\u Employee
时,您不会将任何内容分配给它
Sektioner.Section.Add(new Section(){Name=sektionsnam,Employee=Sektion.Employee})
。在您的示例中,
Employee
属性有以下代码:

public List<Person> Employee
{
     get
     {
           return this._Employee;
     }
     set { }
}
然后,您可以将通话改为:

Sektioner.Section.Add(new Section(sektionsNamn, Sektion.Employee));

我发现它更简单,很少导致类似的错误。

部分
Employee
属性的属性设置器为空,因此当您像这样调用
Sektioner.Section.Add(new Section()时,您不会将任何内容分配给
\u Employee
{Name=sektionsnam,Employee=Sektion.Employee})
。在您的示例中,您为
Employee
属性提供了以下代码:

public List<Person> Employee
{
     get
     {
           return this._Employee;
     }
     set { }
}
然后,您可以将通话改为:

Sektioner.Section.Add(new Section(sektionsNamn, Sektion.Employee));

我发现这更简单,很少会导致类似的错误。

非常感谢您的帮助。这正是我想要的。许多感谢者在测试之后,才发现Sektion.Employee即使在sektionsnam更改后仍不断添加人名。结果是5个部分包含相同数量的人,which不是我想要的。我的分区就像第一分区有4个人,而第二分区有6个人。如果我使用Sektion.Employee.Clear()我最后有5个部分,但我没有这些。你知道如何解决这个问题吗?很抱歉,我找到了一个解决方案,虽然我不知道这是否是最好的做法,但对我来说这听起来很合乎逻辑。我通过添加Sektion=new section()来实例化Sektion;在我将项目添加到Sektioner列表之后。@DreamNet您不介意,但我不能完全理解第一个问题。如果您需要什么,我会帮助您。非常感谢您的帮助。这正是我想要的。许多感谢者在测试后发现,sektions.Employee即使在sektionsnam被删除后仍继续添加人名更改。结果是5个部分包含相同的人数,这不是我想要的。我的部分类似于第1部分有4人,而第2部分有6人。如果我使用Sektion.Employee.Clear()我最后有5个部分,但我没有这些。你知道如何解决这个问题吗?很抱歉,我找到了一个解决方案,虽然我不知道这是否是最好的做法,但对我来说这听起来很合乎逻辑。我通过添加Sektion=new section()来实例化Sektion;在我将项目添加到Sektioner列表之后。@DreamNet您不介意,但我不能完全理解第一个问题。如果您需要什么,我会帮助您的。
Sektioner.Section.Add(new Section(sektionsNamn, Sektion.Employee));