将匹配记录从哈希表读取到类对象中

本文关键字:对象 读取 哈希表 记录 | 更新日期: 2023-09-27 18:33:25

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

我想做的是将studentID添加到我的类对象(其中InstructorName = InstructorName),并且给定一个教师可以关联许多学生,但是,一个学生只能有一个教师。

我的类对象是:

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

我将如何做到这一点?
还是有更好的方法可以做到这一点?

将匹配记录从哈希表读取到类对象中

如果您的哈希表是一个字典,其中键是学生 ID,值是教师姓名,您可以执行以下操作:

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 使用基于匹配键从哈希表投影的字符串列表填充每个 Students 集合。