2010-05-05 26 views
0

我的數據表datewise的記錄與列TradingDate這是datetime.如何在csv文件中存儲排序的記錄?

TableWithOnlyFixedColumns.DefaultView.Sort = "TradingDate asc";

現在我想將這些整理記錄存儲到csv文件,但是存儲的記錄不按日期排序類型進行排序。

TableWithOnlyFixedColumns.DefaultView.Sort = "TradingDate asc"; 
    DataTable newTable = TableWithOnlyFixedColumns.Clone(); 
    newTable.DefaultView.Sort = TableWithOnlyFixedColumns.DefaultView.Sort; 
    foreach (DataRow oldRow in TableWithOnlyFixedColumns.Rows) 
    { 
    newTable.ImportRow(oldRow); 
    } 
    // we'll use these to check for rows with nulls 
    var columns = newTable.DefaultView.Table.Columns.Cast<DataColumn>(); 
    using (var writer = new StreamWriter(@"C:\Documents and Settings\Administrator\Desktop\New.csv")) 
    { 
    for (int i = 0; i < newTable.DefaultView.Table.Rows.Count; i++) 
    { 
     DataRow row = newTable.DefaultView.Table.Rows[i]; 
     // check for any null cells 
     if (columns.Any(column => row.IsNull(column))) 
     continue; 
     string[] textCells = row.ItemArray 
     .Select(cell => cell.ToString()) // may need to pick a text qualifier here 
     .ToArray(); 
     // check for non-null but EMPTY cells 
     if (textCells.Any(text => string.IsNullOrEmpty(text))) 
     continue; 
     writer.WriteLine(string.Join(",", textCells)); 
    } 
} 

那麼如何在csv文件中存儲排序的記錄?

回答

1

這行代碼;

DataRow row = newTable.DefaultView.Table.Rows[i]; 

正在引用DataView背後未排序的DataTable。您需要使用DataRowView而不是DataRow並從DataView訪問已排序的行;

DataRowView row = newTable.DefaultView[i]; 
+0

@ Matt,然後我無法得到方法isNull()在該行下面的代碼行。 – Harikrishna 2010-05-05 09:51:26

+0

你可以通過Row屬性row.Row.IsNull來訪問isNull()方法,可能想要改變你的變量名:-) – Matt 2010-05-05 10:01:52

+0

@ Matt,謝謝你的工作。但我不明白那個時候的概念我們對它沒有物理排序的數據表進行排序,並根據我們對記錄進行排序,數據表沒有被更改? – Harikrishna 2010-05-05 10:05:39

相關問題