2015-10-09 50 views
1

我有一個數據集n數據表的數量。 n的最小值爲30. 在每個數據表中,第一行定義了以下行中數據的數據類型。例如:減少遍歷數據集時的時間複雜度

string Integer string Integer Integer 
test1 67  test1 45  78 
test2 45  test1 32  45 

可以有任意數量的行,我需要驗證數據是否與定義的數據類型匹配。例如,test1是一個字符串,67是一個整數等。

我需要對整個數據集進行此驗證。

這裏是我想出了代碼:

foreach(DataTable dt in dataset.Tables) 
{ 
for(int iRow = 1; iRow <dt.Rows.Count; iRow ++) 
    { 
    for(int jCol = 0;jCol< dt.Columns.Count;jCol++) 
     { 
     //Datatype validation check 
     } 
    } 
} 

這個解決方案正常工作。時間複雜度爲O(datatablescount * dtrowscount * dtcolumnscount)。我試圖優化代碼並尋找任何指針來減少時間複雜度。

+2

如果你需要檢查所有dat,你必須檢查它,並且複雜性不能被降低 – Backs

+0

你沒有給我們足夠的信息來幫助。不知道你正在做的實際計算,我們不能優化。 – Enigmativity

回答

1

如果您需要進行t * r * c檢查,那麼您可以檢查多少個。我建議儘量減少恆定的時間因素並接受複雜性。

減少常量時間的一種方法:如果您告訴C#列的數據類型應該是什麼,它會在您將數據放入數據表時檢查類型。

例如:

// Will require that all values inserted in this column can be converted to Int32 
dt.Columns[0].DataType = typeof(Int32); 

你可以做的另一件事是檢查少列。