2012-03-16 10 views
0

私は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を実行するか?

私の質問が十分ではない、または重要な情報が不足している場合は、私にお知らせください。すぐに対応します。

答えて

0

これは私ができたことです。おそらく化合物のラムダ式を作ることができますか?しかし今のところ私はこのアプローチに固執するでしょう。

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; 
        } 
       } 
      } 

     } 
0

おそらく、ツリー構造のように、各レベルに次のもののリストを格納する方が簡単かもしれません。ハウスにはフロアのリストが含まれています。階には部屋のリストが含まれています。部屋にはアセットのリストが含まれています。各オブジェクトレベルは、第2の「limbo」リストを格納することもできます。

階を削除/復元することは、再帰なしでエントリをあるリストから他のリストに移動するのと同じくらい簡単です。

+0

これはおそらくより良いアプローチでした。しかし、私はこのプロジェクトでは、予定のイベントの地平線を越​​えました。 =) – Ealianis

関連する問題