C# 从对象列表中,如何从另一个参数值中获取特定对象参数值的列表

C# 从对象列表中,如何从另一个参数值中获取特定对象参数值的列表,c#,list,linq,lambda,C#,List,Linq,Lambda,我不确定我做错了什么。我一直在互联网上寻找如何使用lambda高效地获取基于另一个属性的属性值列表 假设我有一个教室列表,上面有教师姓名和房间Id: public class ClassRoom { public string Teacher; public int RoomId; } List<ClassRoom> classRooms = new List<ClassRoom>(); classRooms.Add(new ClassRoom()

我不确定我做错了什么。我一直在互联网上寻找如何使用lambda高效地获取基于另一个属性的属性值列表

假设我有一个教室列表,上面有教师姓名和房间Id:

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" });
然后,我需要一个特定教师的房间ID列表

List<int> RoomIds = new List<int>();

    foreach(ClassRoom classRoom in classRooms)
    {
        if(classRoom.Teacher == "Mr.Taylor")
        {
            RoomIds.Add(classRoom.RoomId);
        }
    }
我在寻找一个lambda表达式或任何其他有效且紧凑的方法来获取房间ID列表。我总是得到一张主课教室的名单

我想要的是这样的东西:

List<int> RoomIds = classRooms.Where(x => x.Teacher == "Mr.Taylor").ToList();
我知道上面的表达是错误的,因为操作给了我一个教室列表,而不是我需要的室友。我只是想描述一下我在追求什么

这可能吗?我真的很感激你的帮助

您缺少一个:

您缺少一个:


这回答了你的问题吗?这回答了你的问题吗?
List<int> RoomIds = classRooms
    .Where(x => x.Teacher == "Mr.Taylor")
    .Select(x => x.RoomId)
    .ToList();
List<int> RoomIds = classRooms
    .Where(x => x.Teacher == "Mr.Taylor")
    .Select(x => x.RoomId)
    .Distinct()
    .ToList();