Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何基于列名和值比较datatable的列?_Asp.net_Vb.net_Datatable_Datarow_Datacolumn - Fatal编程技术网

Asp.net 如何基于列名和值比较datatable的列?

Asp.net 如何基于列名和值比较datatable的列?,asp.net,vb.net,datatable,datarow,datacolumn,Asp.net,Vb.net,Datatable,Datarow,Datacolumn,我有一个数据表,如下所示,它不是固定的,它可以包含n个列。我需要根据列名比较列值,并更新其他行值 例如 DTFinyerValue dtColumnName | 2017AU | 2017CN | 2018AU | 2018CN | 2019CN | 2020CN -------------------------------------------------------------------- Value | -1234 | -500 | -30

我有一个数据表,如下所示,它不是固定的,它可以包含n个列。我需要根据列名比较列值,并更新其他行值

例如

DTFinyerValue

    dtColumnName | 2017AU | 2017CN | 2018AU | 2018CN | 2019CN | 2020CN
    --------------------------------------------------------------------
     Value       | -1234  | -500   | -300   | 1000   | 1000   | -500
     LatestValue | -1234  | -500   | -300   | 500    | 1000   | -500
2018CN的最新值-->2017CN值(-500)和2018CN值(1000)之和


对于上面的datatable,我需要比较列名并相应地更新值 条件:

1) 如果值为-ve,则使用相同的值更新最新的值

2) 如果值为+ve,则检查是否存在相同国家/地区上一财年的-ve值,如(在上述数据表中,2018CN值为+ve,但2017CN值为负值,因此必须更新2017CN和2018CN之和,以获得2018CN-->最新值。)

我不能硬编码列号,因为可能存在不同的国家/地区财政年度组合,我只需要将一个国家/地区的值与同一个国家/地区的值进行比较。
如何在vb.net中编写此代码?

您能以另一种方式从数据库中恢复数据吗?如果是这样,请查看使用SQL unpivot(也可以使用原始数据集在代码中执行unpivot,但您必须手动编写此代码)。这将为您提供3列(名称、值、最新值)。这将更容易处理。仍然可以使用原始数据集进行更新。

“我需要比较列名”。嗯,和什么比较?2018CN的值是1000,2018CN要更新最新值的值我需要检查2017CN是否存在。如果存在,我需要检查该值是否为-ve如果为-ve,我需要将2017CN和2018CN的值相加,并将该值更新为2018CN的最新值,这在上面的数据表中完成。示例都很好,但如果您希望我们建议如何在代码中实现这些规则,我们需要知道实际的规则是什么。你是说,而不是说,对于每一列,你需要将名称分成一个四位数字和一个两个字母的字符串,然后检查是否存在一个字符串相同且数字小于1的列?如果这是你需要做的,那么这就是你应该说你需要做的。如果你还需要其他东西,请详细描述。例子出现在规则之后,而不是之前。因此,“作为一个例子”一词得到同意。列应为[年]、[国家]、[值]、[最新值]