我正在尝试压缩列表列表,同时确保最终对象列表的类型正确.这是一个(抽象)示例:
class Space
{
public List<Space> ContainedSpaces
{
get;
set;
}
}
class Library : Space
{
public void AddRoom(Room room)
{
ContainedSpaces.Add(room);
}
}
class Room : Space
{
}
class Test
{
public List<Room> ListOfRooms(List<Library> libraries)
{
return libraries.SelectMany(lib => lib.ContainedSpaces).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
我在这个例子中的错误ListOfRooms是:
Cannot implicitly convert type 'System.Collections.Generic.List<SoftTech.Integration.Space>' to 'System.Collections.Generic.List<SoftTech.Integration.Room>'
Run Code Online (Sandbox Code Playgroud)
在没有争论类设计的情况下(这是一个抽象的例子),我如何让SelectMany将最终列表中的每个项目类型化为Room对象?
return libraries.SelectMany(lib => lib.ContainedSpaces).OfType<Room>().ToList();
Run Code Online (Sandbox Code Playgroud)