2014-06-08 53 views
1

什麼是存儲表像數據一樣存儲表像數據

  | Column 0 | Column 1 | Column 2 | Column 3 | Column 4 
Row 0 | 0.984546 | 0.654564 | 0.467676 | 0.673466 | 50.03333 
Row 1 | 0.684546 | 0.457564 | 0.467776 | 0.674566 | 45.73335 
Row 2 | 0.884546 | 0.424564 | 0.445676 | 0.664566 | 12.23333 
Row 3 | 0.284546 | 0.054564 | 0.237676 | 0.124566 | 45.01333 

兩個最大列和行是動態的,價值的座標,最好的辦法最好的辦法是非常重要的,因爲我必須做的計算基於這些價值。這不是一個數據庫,因爲每次都有不同的數據,我不希望它永遠存在。另外,我需要它來輕鬆訪問。我嘗試使用Double []鏈接列表,但對於我來說找到每個值都太困難了。速度也是一個因素。

任何有關我應該使用的集合類型或處理方法的建議?

+0

您可以使用'Dictionary >'或一個包裝它到一個索引器中的類。 –

+1

目前還不清楚你的收集的用例是什麼,但這可能是你希望在泛型集合中使用double [,]的少數情況之一 –

回答

1

我想你應該聲明這個變量:

List< List<double> > matrix = new List< List<double> >(); 

稍後,可以使用matrix.Capacity來決定的行數和使用上的每一行相同的屬性來設置列數。這樣你就不會浪費內存。

如果您的下一個數據更短,您可以使用matrix.TrimExcess()來調整矩陣的大小。

使用matrix.Capacitymatrix.TrimExcess()後面的想法是控制數據結構中保留了多少空間。這樣它不會自行增長,你會獲得性能。

+0

您可以使用DataTable或將它們保存在文件中Xml –

+0

@moez我認爲''DataTable'在這種情況下是不需要的,保存到文件不是問題的要求。我的答案沒有問題。 – agarwaen

+0

我只是怕這會讓事情變得緩慢 –

0

另一種選擇是使用XML結構

+0

我認爲這太過分了,動態增長的數據結構應該做得很好。 – agarwaen

0

您可以使用.NET DataTable類,而無需使用一個數據庫在所有...你可以非常容易地建立自己一個沒有任何數據源。這樣,你仍然可以獲得所有的好處(你可以用LINQ查詢它,將它綁定到東西,仍然是動態的),但是你不需要它被數據庫支持。

下面是關於如何完成這個問題的答案。 https://stackoverflow.com/a/1042638/643951