我们可以用C#创建一个列表中的字典吗?

我们可以用C#创建一个列表中的字典吗?,c#,C#,我必须创建一个列表,如下所示: 姓名、卷号 主题编号,主题类型 科目编号、科目类型 e、 g name[0] = ron, roll no[0] = 12 subjectno[0]=1, subject type[0]="english" subjectno[1]=12, subject type[1]="maths" name[1] = elis, roll no[1] = 11 subjectno[0]=1, subject type[0]="e

我必须创建一个列表,如下所示: 姓名、卷号 主题编号,主题类型 科目编号、科目类型

e、 g

name[0] = ron, roll no[0] = 12
        subjectno[0]=1, subject type[0]="english"
        subjectno[1]=12, subject type[1]="maths"

name[1] = elis, roll no[1] = 11
      subjectno[0]=1, subject type[0]="english"
      subjectno[1]=12, subject type[1]="maths"
      subjectno[2]=14, subject type[2]="physics"
我不知道如何在C#中做到这一点。 我试着列出学生信息,然后针对科目号和科目类型,我试着编一本字典。 我写了这样的代码-

class Student
{


    public class StudentInfo
    {
        public String name { get; set; }
        public int rollno { get; set; }
        Dictionary<String, String> subjects;
        public StudentInfo(String name, int rollno)
        {
            this.name = name;
            this.rollno = rollno;
        }
        public void addstudentinfo(string subjectno, string subjecttype)
        {
            if (subjects == null)
                subjects = new Dictionary<string, string>();

            subjects.Add(subjectno, subjecttype);

        }
    }
班级学生
{
公共班级学生信息
{
公共字符串名称{get;set;}
public int rollno{get;set;}
词典主题;
public StudentInfo(字符串名,int-rollno)
{
this.name=名称;
this.rollno=rollno;
}
public void addstudentinfo(字符串subjectno,字符串subjecttype)
{
if(subjects==null)
主题=新词典();
subjects.Add(subjectno,subjecttype);
}
}

您可以创建包含学生信息的结构或类,然后将其添加到
字典
,其中
字符串
是学生姓名作为键

用于存储学生信息的类:

public class StudInfo
{
    public int RollNum;
    public List<string> Activities = new List<string>();

    public StudInfo(int num)
    {
        RollNum = num;
    }

}

您的需求不清楚,但最好还是创建一个
主题

class Subject{
    public int Id {get;set;}
    public string Type {get;set;}
}
从那里,您可以将
词典主题
更改为简单的
列表
类型。并将
添加学生信息
方法更改为将
主题
作为参数


您可以通过修改
Subject
类(例如,使用)来确保某个特定
Subject
的实例只存在一个,从而进一步改进它。

这里是我的做法。首先创建这两个类

public class Student
{
    public int RollNo { get; set; }
    public string Name { get; set; }
    public Student(int rNo, string name)
    {
        this.RollNo = rNo;
        this.Name = name;
    }
    public Student()
    {
    }
}

public class Subject
{
    public int SubjectNo { get; set; }
    public string Type { get; set; }
    public Subject(int sNo, string sType)
    {
        this.SubjectNo = sNo;
        this.Type = sType;
    }
    public Subject()
    {
    }
}
然后按如下方式填写对象:-

  Dictionary<Student, List<Subject>> studentLists = new Dictionary<Student, List<Subject>>();
  Student std = new Student() { RollNo = 11, Name = "John" };
  List<Subject> sbj = new List<Subject>() {new Subject(020, "Math"),new Subject(030,"English") };
  studentLists.Add(std, sbj);
Dictionary studentlist=newdictionary();
Student std=newstudent(){RollNo=11,Name=“John”};
List sbj=newlist(){新科目(020,“数学”)、新科目(030,“英语”)};
学生名单。添加(标准、sbj);
然后按如下方式迭代字典:-

 StringBuilder sb = new StringBuilder();
    foreach (KeyValuePair<Student, List<Subject>> item in studentLists)
    {
        sb.Append("Student No : " + item.Key.RollNo + "<br />");
        sb.Append("Student Name : " + item.Key.Name + "<br />");

        foreach (var subjects in item.Value)
        {
            sb.Append("Subject No : " + subjects.SubjectNo + "<br />");
            sb.Append("Subject Name : " + subjects.Type + "<br />");
        }
    }
StringBuilder sb=新建StringBuilder();
foreach(学生列表中的KeyValuePair项)
{
sb.追加(“学生编号:+item.Key.RollNo+”
); sb.追加(“学生姓名:+item.Key.Name+”
); foreach(item.Value中的var主体) { sb.追加(“主题编号:+subjects.SubjectNo+”
); sb.追加(“主题名称:“+subjects.Type+”
); } }

希望这能有所帮助。

您必须定义哪些C#类?作业?请将其标记为此类。
 StringBuilder sb = new StringBuilder();
    foreach (KeyValuePair<Student, List<Subject>> item in studentLists)
    {
        sb.Append("Student No : " + item.Key.RollNo + "<br />");
        sb.Append("Student Name : " + item.Key.Name + "<br />");

        foreach (var subjects in item.Value)
        {
            sb.Append("Subject No : " + subjects.SubjectNo + "<br />");
            sb.Append("Subject Name : " + subjects.Type + "<br />");
        }
    }