2

在我的 asp.net 应用程序中,我有一个包含InstructorIDInstructorName.
在旧代码中,我有一个 System.Collections.Hashtable,其中包含InstructorName( value ) 和StudentID( key )。

我想要做的是添加studentID到我的班级对象(其中InstructorName = InstructorName),并且鉴于一名教师可以关联许多学生,但是,一名学生只能有一名教师。

我的班级对象是:

public class ClassInstructor
{
    public int InstructorID { get; set; }
    public string InstructorName { get; set; }
    public List<string> studentID { get; set; }
}

我将如何做到这一点?
或者有没有更好的方法来做到这一点?

4

1 回答 1

1

如果您的哈希表是一个字典,其中键是 StudentID,值是 InstructorName,您可以执行以下操作:

Dictionary<string, string> studentTeachers = new Dictionary<string, string>();
studentTeachers.Add("Student #1", "Instructor #1");
studentTeachers.Add("Student #2", "Instructor #1");
studentTeachers.Add("Student #3", "Instructor #1");
studentTeachers.Add("Student #4", "Instructor #1");
studentTeachers.Add("Student #5", "Instructor #2");
studentTeachers.Add("Student #6", "Instructor #2");
studentTeachers.Add("Student #7", "Instructor #2");
studentTeachers.Add("Student #8", "Instructor #2");

var instructors = new List<ClassInstructor>();

instructors.Add(new ClassInstructor() { InstructorID = 1, InstructorName = "Instructor #1" });
instructors.Add(new ClassInstructor() { InstructorID = 2, InstructorName = "Instructor #2" });

foreach (var instructor in instructors)
    instructor.Students = studentTeachers.Where(x => x.Value == instructor.InstructorName).Select(x => x.Key).ToList();

由于您没有发布大量代码,因此您可能需要对其进行调整以处理您的特定对象。这也假设已经填充了教师集合,并且您正在替换对可能已经存在的学生的任何引用。它还假设您的讲师姓名字符串将完全匹配,如果不是,您可能需要执行更宽松的字符串比较。

基本上,在此代码中,您使用 LINQ 使用您根据匹配键从哈希表投影的字符串列表填充每个学生集合。

于 2013-10-01T16:30:39.780 回答