Не уверен, что делаю что-то не так. Я искал inte rnet, как эффективно получить список значений свойств, основанных на другом свойстве, с использованием лямбда.
Допустим, у меня есть список классов с именем учителя и идентификатором комнаты:
public class ClassRoom
{
public string Teacher;
public int RoomId;
}
List<ClassRoom> classRooms = new List<ClassRoom>();
classRooms.Add(new ClassRoom() { RoomId = 2000, Teacher = "Mr. Taylor" });
classRooms.Add(new ClassRoom() { RoomId = 2010, Teacher = "Mrs. Lee" });
classRooms.Add(new ClassRoom() { RoomId = 3050, Teacher = "Mrs. McNamara" });
classRooms.Add(new ClassRoom() { RoomId = 4090, Teacher = "Mr. Taylor" });
Затем мне понадобится список идентификаторов комнат для конкретного c учителя.
List<int> RoomIds = new List<int>();
foreach(ClassRoom classRoom in classRooms)
{
if(classRoom.Teacher == "Mr.Taylor")
{
RoomIds.Add(classRoom.RoomId);
}
}
Я ищу лямбда-выражение или любой другой эффективный и компактный способ получить список идентификаторов комнат. Я всегда получаю список основного класса (ClassRoom).
Я искал что-то вроде этого:
List<int> RoomIds = classRooms.Where(x => x.Teacher == "Mr.Taylor").ToList();
Я знаю, что приведенное выше выражение неверно, так как операция дает мне Список ClassRoom, а не нужных мне номеров RoomIds. Я просто хотел изобразить, что мне нужно.
Это вообще возможно? Я был бы очень признателен за помощь.