C# 从对象列表中,如何从另一个参数值中获取特定对象参数值的列表
我不确定我做错了什么。我一直在互联网上寻找如何使用lambda高效地获取基于另一个属性的属性值列表 假设我有一个教室列表,上面有教师姓名和房间Id: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()
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();