2010-05-10 4 views
0

J'essaye d'obtenir ceci résolu dans .NET 2.0 et malheureusement ce n'est pas négociable. Je lis dans un fichier csv avec des colonnes de données qui devraient correspondre à une liste de tickers dans IdentA avec quelques modifications. Le fichier csv columsn lirait: A_MSFT, A_CSCO, _A_YHOO, B_MSFT, B_CSCO, B_YHOO, C_MSFT, C_CSCO, C_YHOOComment puis-je valider les noms de colonnes et les compter dans un tableau List? C#

IDENTA [0] = "MSFT"
IDENTA [1] = "CSCO"
IDENTA [2] = "YHOO"

Le tableau AssetsA est remplie avec les données de CSV
AssetsA [0] = 0
AssetsA [1] = 1,1
AssetsA [2] = 0
AssetsA [ 3] = 2
AssetsA [4] = 3,2
AssetsA [5] = 12
AssetsA [6] = 54
AssetsA [7] = 13
AssetsA [8] = 0,2

Les colonnes C_ sont facultatives mais s'ils existent, ils doivent tous exister. Tous les suffixes doivent correspondre aux valeurs d'IdentA. Les valeurs dans les fichiers csv doivent toutes être décimales. J'utilise un groupe de 3 comme exemple, il pourrait y avoir n'importe quel nombre de tickers dans le tableau IdentA.

Son assez facile à faire la première partie:

for (int x = 0; x < IdentA.Count; x++) 
{ 
    decimal.TryParse(AssetsA[x + IdentA.Count], out currentelections); 
} 

Donc, ça va me faire le premier ensemble de valeurs pour les colonnes A_ mais comment puis-je passer à travers B_ et C_? Je ne peux pas faire quelque chose d'aussi simple que IdentA.Count * 2 ...

EDIT: IDENTA se renseigné lorsque la première ligne du csv est lu, AssetsA est renseigné sur les lignes suivantes jusqu'à ce que EOF. Le concepteur original a toujours supposé que B_ et C_ existeraient toujours et que les données «tomberaient en place». Voulez-vous regarder ce qu'il faudrait pour redessiner :(

+0

Puis-je suggérer que vous utilisez probablement la structure de données mal si je lis votre Je suggérerais une carte de {string, ArrayList} Dans la carte, lis chaque colonne d'identification comme une KEY, puis lors du remplissage des assets, ce serait myMap ["A_MSFT"] Add (value). – Serapth

+0

J'aime cette idée, mais j'essaie de travailler dans le contexte du code existant qui fonctionne 95% du temps, mais personne ne savait que c'était un problème pendant 2 ans. quelqu'un a laissé les données C_ entièrement, puis l'Iden existant Test tA.Count * 2 cassé. Je pourrais juste atteindre pour le couteau de filet et le gut mais ce n'est pas ma première option si je pourrais éviter. –

Répondre

0

utiliser des tableaux 2d à passer par deux tableaux comme si

for(int i = 0; i <= twoDeeArr[0].Count-1; i++) 
{ 
    for(int j = 0; j <= twoDeeArr.Count-1; j++) 
    { 
      decimal.TryParse((decimal)twoDeeArr[i][j], out currentElections); 
    } 
} 
Questions connexes