如何根据列名和值比较数据表的列?

时间:2017-08-22 05:23:44

标签: asp.net vb.net datatable datarow datacolumn

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

E.g

dtFinYearValues

    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)之和。

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

1)如果值为-ve,则更新具有相同值的LatestValue。

2)如果值为+ ve,检查同一国家的前一个年度是否存在任何-ve值(在上述数据表中2018CN值为+ ve但2017CN值为负,因此2017CN和2018CN之和为要更新2018CN - >最新值。)

我无法对列号进行硬编码,因为可能存在不同的国家/地区年份组合,我需要仅比较一个国家/地区与同一国家/地区的价值。 我如何在vb.net中编码?

1 个答案:

答案 0 :(得分:1)

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