1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| Sub Main()
Dim directory As String = "C:\Data"
Dim minDate As DateTime = new DateTime(2011, 10, 1)
Dim maxDate As DateTime = new DateTime(2011, 11, 1)
For Each d As DataRecord In GetDataForDateRange(directory, minDate, maxDate)
' Faire ce que tu veux avec les données
Next
End Sub
Structure DataRecord
Public Property Timestamp As DateTime
Public Property Value As Double
Public Shared Function Parse(ByVal s As String) As DataRecord
Dim d As New DataRecord()
Dim parts As String() = s.Split(";"c)
d.Timestamp = DateTime.ParseExact(parts(0), "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture)
d.Value = Double.Parse(parts(1), CultureInfo.InvariantCulture)
Return d
End Function
End Structure
Function GetDataForDateRange(ByVal directory As String, ByVal minDate As DateTime, ByVal maxDate As DateTime) As IEnumerable(Of DataRecord)
Dim allData =
From file In GetFilesForDateRange(directory, minDate, maxDate)
From d In ReadDataFromFile(file)
Where d.Timestamp >= minDate AndAlso d.Timestamp <= maxDate
Order By d.TimeStamp
Select d
return allData.Distinct()
End Function
Function GetFilesForDateRange(ByVal directory As String, ByVal minDate As DateTime, ByVal maxDate As DateTime) As IEnumerable(Of String)
' TODO : lister les fichiers qui correspondent aux dates voulues
End Function
Function ReadDataFromFile(ByVal fileName As String) As IEnumerable(Of DataRecord)
Return File.ReadAllLines(fileName) _
.Skip(4) _
.Select(AddressOf DataRecord.Parse)
End Function |
Partager