Как хранить отсортированные записи в файле CSV? - PullRequest
0 голосов
/ 05 мая 2010

Я сортирую записи данных по дате с помощью столбца TradingDate, который имеет тип datetime.

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 Ответ

1 голос
/ 05 мая 2010

Эта строка кода;

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

ссылается на несортированную таблицу данных за DataView. Вам нужно использовать DataRowView вместо DataRow и обращаться к отсортированным строкам из DataView;

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