2017-05-06 6 views
0

Beim Einlesen einer CSV-Datei mit CSVhelper habe ich tausende Datenzeilen, die 5. Spalte jeder Zeile enthält ein Datum/eine Uhrzeit. Ich möchte die Anzahl der Zeilen zwischen 2 angegebenen Daten zählen. Wenn wir unten am Eingang aussehen:Einlesen einer .csv-Datei und Zählen der Anzahl der Zeilen zwischen den Datumsbereichen C#

enter image description here

Der Code, um die Linien zählen, muss zwischen etwa 2014.10.24 und 2014.10.29 und dieser Zählung als Variable speichern, in diesem Fall zu erwarten Ausgabe wird (9) sein. Bitte beachten Sie, dass dies eine Beispieleingabe ist und die tatsächliche Anzahl der Zeilen zwischen den Datumsbereichen beträchtlich ist.

Derzeit ist die CSV-Datei in durch CSVReader gelesen wird und zum Speichern in: IEnumerable dataRecord = reader.GetRecords<dataRecord>().ToList();

ich so ratlos bin, wie um dies zu realisieren, wäre jede Hilfe dankbar.

+0

Die Klasse datarecord ist das Datum, ein String oder ein Datetime? – jdweng

+0

Ich denke, der nächste Schritt wäre, jede Zeile entweder zu einem benutzerdefinierten Typ zu deserialisieren und dann linq zu verwenden, um die Ergebnismenge abzufragen oder die Datumsspalte zu erhalten und einen Inkrementor in einer 'foreach'-Schleife zu verwenden. –

+0

DateTime startDate = DateTime.Parse ("2014-10-24"); DateTime endDate = DateTime.Parse ("2014-10-29"); int zaehler = dataRecord.Where (x => (DateTime.Parse (x.date)> = startDate) && (DateTime.Parse (x.date) <= endDate)). Count(); – jdweng

Antwort

0

versuchen, etwas wie folgt aus:

var count = dataRecord 
    .SkipWhile(record => DateTime.Parse(record.Date).Date != new DateTime(2014, 10, 24)) 
    .TakeWhile(record => DateTime.Parse(record.Date).Date != new DateTime(2014, 10, 29)) 
    .Count(); 
+0

@ Johnfish92 - Verwenden Sie 'var' anstelle von' IEnumerable'. –

Verwandte Themen