2017-08-22 6 views
2

J'ai un datatable comme ci-dessous qui n'est pas fixe il peut contenir n nombre de colonnes. Je dois comparer les valeurs des colonnes en fonction du nom de la colonne et mettre à jour l'autre valeur de la ligneComment comparer les colonnes d'une datatable en fonction du nom et de la valeur de la colonne?

Par exemple,

dtFinYearValues ​​

dtColumnName | 2017AU | 2017CN | 2018AU | 2018CN | 2019CN | 2020CN 
    -------------------------------------------------------------------- 
    Value  | -1234 | -500 | -300 | 1000 | 1000 | -500 
    LatestValue | -1234 | -500 | -300 | 500 | 1000 | -500 

LatestValue de 2018CN -> Somme des 2017CN Valeur (-500) et 2018CN Valeur (1000).

Pour datatable ci-dessus je dois comparer le nom de colonne et mettre à jour la valeur en conséquence Conditions:

1) Si la valeur est mise à jour -ve la LatestValue avec une valeur identique. 2) Si la valeur est + ve, vérifier si la valeur -ve existe pour l'année précédente du même pays (Dans la valeur 2018CN ci-dessus, la valeur est + ve mais la valeur 2017CN est négative, donc la somme de 2017CN et 2018CN doit être mis à jour pour 2018CN -> Dernière valeur.)

Je ne peux pas coder en dur le numéro de colonne car il peut y avoir une combinaison différente de l'année de fin de campagne, je dois comparer la valeur d'un pays avec le même pays seulement. Comment puis-je coder ceci dans vb.net?

+0

"J'ai besoin de comparer le nom de la colonne". Um, comparez-le à quoi? – jmcilhinney

+0

La valeur de 2018CN est 1000, pour 2018CN pour mettre à jour la valeur de latestValue, j'ai besoin de vérifier si 2017CN existe. S'il existe, j'ai besoin de vérifier si cette valeur est -ve si elle est -ve j'ai besoin de sommer les valeurs de 2017CN et 2018CN et mettre à jour la valeur à latestValue de 2018CN qui est faite dans la donnée ci-dessus. – Kumar

+0

Les exemples sont tous bons, mais nous devons savoir quelles sont les règles actuelles si vous voulez que nous suggérions comment implémenter ces règles dans le code. Êtes-vous en train de dire, sans dire, que, pour chaque colonne, vous devez diviser le nom en un nombre à quatre chiffres et une chaîne de deux lettres, puis vérifier s'il existe une colonne avec la même chaîne et un chiffre ? Si c'est ce que vous devez faire, c'est ce que vous auriez dû dire. Si vous avez besoin d'autre chose, veuillez le décrire de manière similaire. Les exemples viennent après les règles, pas avant. D'où le terme "comme exemple". – jmcilhinney

Répondre

1

Pouvez-vous ramener les données de la base de données d'une autre manière? Si c'est le cas, regardez avec unpivot SQL (le nonpivot pourrait également être fait dans votre code en utilisant votre dataset original mais vous devrez le coder manuellement). Cela vous donnera 3 colonnes (nom, valeur, dernière valeur). Ce sera plus facile à traiter. Les mises à jour peuvent toujours être effectuées en utilisant votre jeu de données d'origine.

+0

D'accord. Les colonnes doivent être [Année], [Pays], [Valeur], [DernièreValeur] – SSS