获取其属性包含传递参数的实体的列表

本文关键字:实体 列表 参数 属性 包含传 获取 | 更新日期: 2023-09-27 18:28:15

我有4个主要类:房子、楼层、房间、资产。资产在一个房间里,这个房间在房子的地板上。每一种都有不同的性质;即公共字符串名称;

我正在完成CRUD方法,遇到了一个相当简单的问题,即删除整个楼层,该楼层可能包含也可能不包含房间和/或资产。

//pseudocode-ish
House.cs
private readonly List<Floor> _floors = new List<Floor>();
private readonly List<Room> _rooms = new List<Room>();
private readonly List<Asset> _assets = new List<Asset>();
.
..
public IEnumerable<Floor> GetFloors()
    {
        return _floors;
    }
public IEnumerable<Room> GetRooms()
    {
        return _rooms;
    }
public IEnumerable<Asset> GetAssets()
    {
        return _Assets;
    }
...
..
.
public void deleteFloor(Floor oldFloor)
{
//locate rooms on oldFloor (roomOnFloor.floor.name == oldfloor.name)
//locate a rooms with assets ( asset.room.name == roomOnFloor.floor.name)
//create a "limbo" room and move assets into it.
{

我认为最好的方法是利用IEnumerable和一些逻辑参数。不知道从哪里开始。或者可能是一个抓取属性并运行foreach?

如果我的问题不够清楚或缺乏重要信息,请告诉我,我会尽快回复。

获取其属性包含传递参数的实体的列表

也许让每个级别存储下一个级别的列表会更简单,就像树结构一样。House包含楼层列表。楼层包含房间列表。房间包含一个资产列表。每个对象级别还可以存储第二个"边缘"列表。

然后,删除/恢复楼层(或较低级别)就像将条目从一个列表移动到另一个列表一样简单,而无需递归。

这就是我所能做的。也许可以创建一个复合lambda表达式??但现在我会坚持这种方法。

foreach (Room room in this._rooms)
        {
            if (oldFloor.Name == room.Floor.Name)
            {
                foreach (Asset asset in this._assets)
                {
                    if (asset.Parent == room)
                    {
                        asset.Parent = null;
                    }
                }
            }
        }