ハッシュ テーブルが、キーが 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 を使用して、一致するキーに基づいてハッシュ テーブルから射影した文字列のリストを各 Students コレクションに入力します。