2016-04-27 11 views
-2

Hat eine Funktion, bei der die gesamte Dateigröße innerhalb des angegebenen Bereichs zurückgegeben werden soll. Sie wird jedoch durch alle Dateien im Verzeichnis und nicht zwischen den Datumsbereichen ausgeführt.spezifizierter Datumsbereich nicht korrekt zurückgegeben C# - Bearbeitet

public static long fileSize(string source_path) 
{ 
    return new DirectoryInfo(source_path).EnumerateFiles("*.SS*").Where(file => file.CreationTime < dt.AddMonths(-2)).Sum(file => file.Length); 
} 
+1

Ist di ein Directory Objekt? Wenn ja, warum wurde der ToString auf ein FileInfo-Objekt angewendet? Entfernen Sie es. – Steve

+0

Ihr 'Where' Lambda ist nicht korrekt gebildet. Es ist unsinnig, 'ToString' auf alles zu klicken ... sollte wahrscheinlich etwas näher an 'filename => filename.LastWriteTime> = from_date && filename.LastWriteTime <= to_date' sein –

Antwort

2

Warum alle ToString()? Eine Zeichenfolge hat keine Eigenschaft.

Try this:

foreach (var filename in di.EnumerateFiles("*.SS*").Where(filename=>filename.LastWriteTime >= from_date && filename.LastWriteTime <= to_date)) 
5

Sie zur Zeit fordern die ToString() Methode auf Ihre Datei-Objekte und dann die LastWriteTime Eigenschaft zuzugreifen versuchen, zu. Dies sollte eigentlich noch nicht einmal kompiliert worden sein (da Sie versuchen würden, auf LastWriteTime von einer Zeichenkette anstatt von einem FileInfo Objekt zuzugreifen).

versuchen, alle Ihre ToString() Anrufe zu entfernen und mit dem folgenden:

// Find your files with LastWriteTimes that fall between your specific range 
foreach (var file in di.EnumerateFiles("*.SS*").Where(f => f.LastWriteTime >= from_date && f.LastWriteTime <= to_date)) 
{ 
    // Iterate through your files here 
} 
Verwandte Themen