我有一个 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)。我正在尝试优化代码并寻找任何指针以减少时间复杂度。
答案 0 :(得分: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);
您可以做的另一件事是检查更少的列。