Wie sortierter Datensätze in CSV-Datei speichern?
-
03-10-2019 - |
Frage
Ich sortiere die Datensätze der Datentabelle datewise mit der Säule TradingDate
, welche Art von datetime.
ist
TableWithOnlyFixedColumns.DefaultView.Sort = "TradingDate asc";
Jetzt möchte ich diese sortierten Datensätze in CSV-Datei speichern, aber gespeicherten Datensätze werden nicht nach Datum sortiert.
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));
}
}
Wie sortierten Datensätze speichern in CSV-Datei?
Lösung
Diese Codezeile;
DataRow row = newTable.DefaultView.Table.Rows[i];
verweist auf die unsortierten Datentabelle hinter dem Dataview. Sie benötigen einen DataRowView anstelle einem DataRow und Zugang der sortierten Zeilen aus der Dataview zu verwenden;
DataRowView row = newTable.DefaultView[i];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow