2017-05-06 57 views
0

當使用CSVhelper讀取CSV文件時,我有數千行數據,每行的第5列將包含日期/時間。我想要計算兩個給定日期之間的行數。如果我們看一下下面的輸入:讀取.csv文件並計算日期範圍之間的行數C#

enter image description here

代碼需要數說2014年10月24日和2014年10月29日之間的界限,這算保存爲一個變量,在這種情況下,預計輸出將是(9)。請注意,這是一個示例輸入,日期範圍之間的實際行數相當可觀。

目前.csv文件正在通過csvreader讀取和存儲: IEnumerable dataRecord = reader.GetRecords<dataRecord>().ToList();

我難倒如何去這件事,任何幫助,將不勝感激。

+0

類dataRecord是日期字符串或日期時間? – jdweng

+0

我認爲接下來的一步是將每行反序列化爲自定義類型,然後使用linq查詢結果集或獲取日期列並在'foreach'循環中使用遞增器。 –

+0

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

回答

0

嘗試這樣:

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 - 使用'var'而不是'IEnumerable'。 –