使用数组的数组的一个C#中的许多关系(Using Array of Arrays for One t

2019-10-22 13:34发布

我正在用C#控制台测试。

其实我从来没有使用C#,但VB.Net。 我想为一个一对多的关系创建阵列。

我的一个是“一个学生有“姓名”,“性别”,......,“课程采取”。

一个学生将采取许多课程,每门课程都有一个标题,其中包括主题。 每个主题都有名称,描述和点。

像这样。

Student
- Name   - Sex   - Courses Taken

Take Courses
- Course Title   - Subject Included

Subject
- Subject Name             [Math]       [MVC]
- Subject description      [Advance]    [Building Website]
- Subject Point            [6.9]        [5.6]

我想存储在阵列的每个实体,但我不知道如何科目/课程连接到每个学生。 我怎么能得到谁参加数学或MVC学生。 因为每一个学生可以有更多的则更多的课程/多个科目。

Answer 1:

你要创建类来描述你的不同的对象。

class Student
{
   string Name { get; set; }
   Gender Sex { get; set; } // write an enum for this
   IEnumerable<Course> CoursesTaken { get; set; }
}

class Course
{
   string Title { get; set; }
   Subject Subject { get; set; }
}

class Subject
{
   string Name { get; set; }
   string Description { get; set; }
   double Points { get; set; }
}

使用List来创建这些新类型的实例列举允许您使用LINQ选择或评估列表的成员(嵌套的for循环以及工作):

// populate a list of students called studentList
//...
// use LINQ to select the students you want
var mathResults = studentList.Where(student => student.CoursesTaken.Any(course => course.Subject.Name == "Math"));


Answer 2:

我觉得我已经在好办法用它做...请检查我的代码为我的疑问句! ^^我第一下面进行3类..

class Students
    {
        public string StudentName;
        public int StudSize;
        public bool StudSex;
        public List<Take_Courses> tcourses;
        public Students() { }
        public Students(string name, int size, bool sex, List<Take_Courses> tcourses)
        {
            StudentName = name;
            StudSize = size;
            StudSex = sex;
            this.tcourses = tcourses;
        }
}

class Take_Courses
    {
        public string classname;
        public List<Arr_Courses> arr_Course;
        public Take_Courses() { }
       public Take_Courses(string classname, List<Arr_Courses> arr_courses)
        {
            this.classname = classname;
            arr_Course = arr_courses;
        }
    }

class Arr_Courses
    {
        public string cosname;
        public string cosdesc;
        public float cospoint;
        public Arr_Courses() { }
        public Arr_Courses(string name, string description, float point)
        {
            cosname = name;
            cosdesc = description;
            cospoint = point;
        }
    }

然后我初始化在下面主要类值;

Arr_Courses acos=new Arr_Courses();
Arr_Courses acos1=new Arr_Courses("Math","Advance Math1",9.5f);

Take_Courses cos=new Take_Courses();
Take_Courses cos_take1=new Take_Courses("Info Tech",new List<Arr_Courses>{acos1});


Students stu=new Students();
Students Stu1 = new Students("Milla", 22, true,new List<Take_Courses>{cos_take1});

然后我做将产生另一个列表学生的名字和使用循环和分配每一个到列表。

我认为,一些重要的部分是这样的。

  if (arr_stud[i].tcourses[j].arr_Course[k].cosname.Equals("Math"))
    {
         Math_Stud++;
         MathStudents[i] = arr_stud[i];
    }

我分享这个如果有人需要这样的事情。 任何未分级码被理解为共享。 感谢这么如此。



文章来源: Using Array of Arrays for One to Many Relationship in C#