2011-12-05 3 views
1

텍스트 파일에서 검색된 값을 배열에 저장했습니다. 이제 이러한 배열 값을 아래 코드가있는 데이터 테이블에 저장하려고합니다.배열을 데이터 테이블에 저장하십시오.

첫 번째 행에 20 개의 값이 있고 두 번째 행에 23 개의 값이있는 경우 마지막 20 개 (첫 번째 행의 열 개수)가 비어있는 데이터 표에 43 개의 셀이 만들어집니다. 이것은 각 행에 대해 계속됩니다. 데이터 테이블에 배열을 저장하는 다른 방법이 있습니까?

var reader = new StreamReader(File.OpenRead(@"d:\er.txt")); 
var table = new DataTable("SampleTable"); 

while (!reader.EndOfStream) 
{ 
    var line = reader.ReadLine().Trim(); 
    var values = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); 
    string[] ee = values; 
    var newRow = table.NewRow(); 
    for (int i = 0; i < ee.Length; i++) 
    { 
     table.Columns.Add(); 
     newRow[i] = ee[i].Trim().ToString(); // like sample [0,0] 
    } 
    table.Rows.Add(newRow); 
} 
+0

테이블은 사실 직사각형입니다. 여기서 뭘하고 싶니? "성공"은 어떤 모습일까요? –

+0

은 출력 테이블 구조를 보여 주므로 수행하려는 작업이 무엇인지 알 수 없습니다. DataTable을 사용하여 수행 할 수있는 작업을 수행 할 수 없습니다. –

+0

파일을 구분하고, FileHelpers.Net을 사용하여 데이터 테이블로 곧바로 이동하는 것을 고려하십시오. 한 가지 유형의 사용법은 http://stackoverflow.com/questions/1898/csv-file-imports-in-net을 참조하십시오. 쉼표가 아닌 원하는 구분 기호를 사용할 수 있습니다. – dash

답변

2

이는 테이블에 추가하는 각 값에 대해 열을 추가하기 때문입니다. 필요한 경우 다른 열을 추가하기 만하면됩니다. 다음과 같은 것이 충분해야합니다 :

var reader = new StreamReader(File.OpenRead(@"d:\er.txt")); 
var table = new DataTable("SampleTable"); 
int columnCount = 0; 
while (!reader.EndOfStream) 
{ 
    var line = reader.ReadLine().Trim(); 
    var values = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); 
    string[] ee = values; 
    while (columnCount < ee.Length) 
    { 
    // Only add a new column if it's required. 
    table.Columns.Add(); 
    columnCount++; 
    } 
    var newRow = table.NewRow(); 
    for (int i = 0; i < ee.Length; i++) 
    { 
     newRow[i] = ee[i].Trim().ToString(); // like sample [0,0] 
    } 
    table.Rows.Add(newRow); 
} 
+0

감사합니다. 맞아. – Karthik

관련 문제