2015-10-09 140 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); 

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