Da CSV a SQL: aggiungi 1 giorno a una data in una colonna dati

c# csv datacolumn datetime sqlbulkcopy

Domanda

Sto cercando di aggiungere 1 giorno a tutte le date che si trovano in una data colonna specifica ['RecordAddedDate']

csvData.Columns.AddRange(new DataColumn[3] {                     
new DataColumn("Manufacturer", typeof(string)),
new DataColumn("SupplierCode", typeof(string)),
new DataColumn("RecordAddedDate", typeof(DateTime))});

Al momento nel momento in cui ho questo lavoro:

for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++)
{
DateTime dt2 = DateTime.Parse(fieldData[2]);
var newDate = dt2.AddDays(1);
csvData.Rows[rowIndex][2] = newDate;                                    
}

Ma aggiunge solo 1 giorno alla prima riga letta dal csv e non aggiunge per il resto.

Qualsiasi aiuto?

Ecco il ciclo while che legge i dati dal csv e aggiunge i dati

 while (!csvReader.EndOfData)
                {
                    string[] fieldData = csvReader.ReadFields();
                    //Making empty value as null
                    for (int i = 0; i < fieldData.Length; i++)
                    {
                        Console.WriteLine(fieldData[i]);
                        if (fieldData[i] == "")
                        {
                            fieldData[i] = null;
                        }

                        for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++)
                        {
                            DateTime dt2 = csvData.Rows[rowIndex].Field<DateTime>(2);
                            DateTime newDate = dt2.AddDays(1);
                            csvData.Rows[rowIndex][2] = newDate;
                        }                             

                    }
                    csvData.Rows.Add(fieldData);
                    Console.WriteLine("Rows count:" + csvData.Rows.Count);
                }
            }
        return csvData;

Risposta popolare

Che cos'è fieldData[2] ? Lo usi sempre nel ciclo, quindi non c'è da meravigliarsi se ricevi sempre lo stesso DateTime . Se la tabella è già piena e si desidera aggiornare un valore, utilizzare csvData.Rows[rowIndex][2] = csvData.Rows[rowIndex].Field<DateTime>(2).AddDays(1);

for (int rowIndex = 0; rowIndex < csvData.Rows.Count; rowIndex++)
{
    DateTime dt2 = csvData.Rows[rowIndex].Field<DateTime>(2);
    DateTime newDate = dt2.AddDays(1);
    csvData.Rows[rowIndex][2] = newDate;                                    
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché