如何输入选择多个结果

Geo*_*off 2 c# linq

我正在尝试压缩列表列表,同时确保最终对象列表的类型正确.这是一个(抽象)示例:

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对象?

Jer*_*ook 7

return libraries.SelectMany(lib => lib.ContainedSpaces).OfType<Room>().ToList();
Run Code Online (Sandbox Code Playgroud)