2011-12-05 168 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

謝謝你man u說得對 – Karthik

相關問題