【发布时间】:2020-05-08 06:59:26
【问题描述】:
不确定我做错了什么。我一直在互联网上寻找如何使用 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 列表。我总是会得到一个主类(ClassRoom)的列表。
我追求的是这样的:
List<int> RoomIds = classRooms.Where(x => x.Teacher == "Mr.Taylor").ToList();
我知道上面的表达式是错误的,因为操作给了我一个 ClassRoom 列表,而不是我需要的 RoomIds。我只是想描绘我所追求的。
这可能吗?我非常感谢您的帮助。
【问题讨论】:
-
这能回答你的问题吗? Retrieving item from list