2010-05-10 3 views
0

.NET 2.0에서이 문제를 해결하려고 노력 중입니다. 불행히도 협상 할 수 없습니다.List 배열에서 열 이름의 유효성을 검사하고 개수를 계산하려면 어떻게해야합니까? C#

일부 수정 사항으로 IdentA의 시세표 목록에 해당하는 데이터 열이있는 CSV 파일을 읽었습니다. CSV 파일의 columsn 읽을 것이다 : A_MSFT, A_CSCO, _A_YHOO, B_MSFT, B_CSCO, B_YHOO, C_MSFT, C_CSCO, C_YHOO

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

AssetsA 배열이 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

C_ 열은 선택적이지만 존재한다면 모두 존재해야합니다. 모든 접미어는 IdentA의 값과 일치해야합니다. csv 파일의 값은 모두 10 진수가되어야합니다. 예를 들어 3 개의 그룹을 사용하고 있습니다. IdentA 배열에 여러 개의 시세 표시기가있을 수 있습니다. 그래서

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

이 나에게 A_ 열 값의 첫 번째 세트를 얻을 것이다 그러나 나는 B_ 및 C_을 통해 방법을 얻을 수 있습니다 : 첫 번째 부분을 할

쉬운 충분? csv로의 첫 번째 줄 읽을 때 IdentA가 채워 도착, AssetsA는 EOF 때까지 후속 행에 채워집니다 : 나는

편집 ... IdentA.Count * 2와 같은 간단한 일을 할 수 없습니다. 원래 설계자는 항상 B_와 C_가 항상 존재하고 데이터가 단지 '제자리에 놓일'것이라고 항상 가정했습니다. 그것은 내가 읽고 있습니다 경우 당신은 아마 잘못된 데이터 구조를 사용하는 것이 좋습니다 수

+0

처럼 두 개의 배열을 통해 이동하는 :(재 설계하는 데 걸리는 무엇을보고가는 당신 문제가 올바르게. 나는 {string, ArrayList}의지도를 제안한다.지도에서 각 ident 열을 KEY로 읽은 다음 자산을 채울 때 myMap [ "A_MSFT"]가된다. 현재의 문제를 훨씬 쉽게 해결할 수 있습니다. – Serapth

+0

나는 그 아이디어가 마음에 들지만, 나는 95 %의 시간 동안 작동하는 기존 코드의 컨텍스트 하에서 이것을 해결하려고 노력하고 있습니다. 아무도 그것이 2yrs까지 문제라고 생각조차 알지 못했습니다. 누군가 C_ 데이터를 완전히 버린 후 기존의 Iden tA.Count * 2 테스트가 중단되었습니다. 나는 필렛 칼을 손에 넣을 수는 있지만 그것을 피할 수 있다면 내 첫 선택 사항은 아니다. –

답변

0

사용하는 2 차원 배열이 너무

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); 
    } 
} 
관련 문제