的設置創建在C#
多層矩陣上下的收藏我有一個List<Room>()
,我得到一個服務了。該列表每10秒刷新一次,並且房間被添加並移除。
class Room
{
public int ID {get;set;}
}
我的工作
要在屏幕上顯示這些房間,我有可變大小的矩陣狀觀。 有時矩陣是3 x 3單元格,其他時間是4 x 2或5 x 1.
我需要一種方法來「記住」哪個槽/單元格被放置在一個房間中,所以我認爲DataTable會給我這個選擇。
要存儲我用數據表,它有3列的單元:
- 「列」(INT)
- 「行」(INT)
- 「室」(房間)
所以,如果我有一個2 x 4矩陣,它看起來像這樣。
Column | Row | Room ----------------------------- 0 | 0 | rooms[0] ----------------------------- 1 | 0 | rooms[1] ----------------------------- 2 | 0 | rooms[2] ----------------------------- 0 | 1 | rooms[3] ----------------------------- 1 | 2 | rooms[4] And so forth...
一旦我有了這個DataTable,我就可以刷新屏幕,知道每個房間都會顯示在之前的位置。這可能可以通過更智能的方式實現。
問題
現在我需要枚舉List<Room>
,並填補了矩陣/數據表。
如果我有更多的房間比單元格,那麼我需要再次開始位置0,0
(如添加一個新的矩陣作爲一個層),直到所有的房間都被分配了一個單元格。
這種方法至今
我已經嘗試了一些for(...)
循環看起來像:
int totalTiles = area.TileColumns * area.TileRows;
int totalLayers = (int)Math.Ceiling((double)area.Rooms.Count/totalTiles);
for (int i = 0; i < totalLayers; i++)
{
for (int j = 0; j < area.TileRows; j++)
{
for (int k = 0; k < area.TileColumns; k++)
{
// This is going nowhere :-(
}
}
}
在我的腦子
當我第一次遇到這個問題來了,我立即想到:「沒有一個簡單的LINQ查詢不能修復!」。然後我磚...
什麼是最有效/最好的方法來填補這個矩陣?
但**在我的大腦**:* LINQ不能總是做的事情,特別是有關設置/更改沒有得到/查詢* –
你不應該使用'DataTable'來表示矩陣。首先,這是一個相當「重」的對象,而不是輕量級的對象。接下來,它被設計爲表示一系列行,這與nxm矩陣並不完全相同。這樣做的一個主要結果就是你不設置單獨的單元格,而是設置行。只用一個多維矩陣你可能會更好。 – Servy