Asp.net 如何基于列名和值比较datatable的列?
我有一个数据表,如下所示,它不是固定的,它可以包含n个列。我需要根据列名比较列值,并更新其他行值 例如 DTFinyerValueAsp.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
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的列?如果这是你需要做的,那么这就是你应该说你需要做的。如果你还需要其他东西,请详细描述。例子出现在规则之后,而不是之前。因此,“作为一个例子”一词得到同意。列应为[年]、[国家]、[值]、[最新值]