2017-05-06 1 views
0

Lors de la lecture dans un fichier CSV avec CSVhelper j'ai des milliers de lignes de données, la 5ème colonne de chaque ligne aura une date/heure. Je veux compter le nombre de lignes entre 2 dates données. Si nous regardons l'entrée ci-dessous:Lecture dans un fichier .csv et comptage du nombre de lignes entre les plages de dates C#

enter image description here

Le code doit compter les lignes entre, par exemple 24/10/2014 et 29/10/2014 et enregistrez ce nombre comme une variable, dans ce cas, prévu la sortie sera (9). Veuillez noter qu'il s'agit d'un exemple d'entrée et que le nombre réel de lignes entre les plages de dates sera considérable.

Actuellement le fichier .csv est en cours de lecture dans CSVReader par et le stockage dans: IEnumerable dataRecord = reader.GetRecords<dataRecord>().ToList();

Je suis perplexe quant à la façon d'aller à ce sujet, toute aide serait appréciée.

+0

La classe dataRecord est la date une chaîne ou un DateTime? – jdweng

+0

Je pense que l'étape suivante consisterait soit à désérialiser chaque ligne en un type personnalisé puis à utiliser linq pour interroger le jeu de résultats ou pour obtenir la colonne de date et utiliser un incrémenteur dans une boucle 'foreach' –

+0

DateTime startDate = DateTime.Parse ("2014-10-24"); DateTime endDate = DateTime.Parse ("2014-10-29"); nombre entier = dataRecord.Where (x => (DateTime.Parse (x.date)> = dateDébut) && DateTime.Parse (x.date) <= endDate)). Count(); – jdweng

Répondre

0

Essayez quelque chose comme ceci:

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 - Utilisez 'var' au lieu de' IEnumerable'. –