3 Stimmen

Problem bei der Ermittlung der Mindestlänge mit LINQ?

Hier suche ich die Mindestgröße einer Textdatei innerhalb eines Verzeichnisses, aber es gibt 0 Aber es gibt keine 0 kb Datei in diesem Verzeichnis.

var queryList3Only= (from i in di.GetFiles("*.txt", SearchOption.AllDirectories)
                     select i.Length / 1024).Min();
dest.WriteLine(queryList3Only.ToString()+" Kb");

Haben Sie einen Vorschlag?

6voto

Stecya Punkte 22308

Sie müssen Doubles und nicht Int's auswählen. Wenn die Dateigröße < 1024 ist, wird die Größe 0 sein.

var queryList3Only= (from i in di.GetFiles("*.txt", SearchOption.AllDirectories)
                     select (double)i.Length / 1024).Min();

2voto

Colin Mackay Punkte 18052

Wenn Sie Dateien haben, die kleiner als 1024 Bytes sind, werden sie als Null angezeigt, da Ihre ganzzahlige Division abgeschnitten wird.

1023 / 1024 = 0

Wenn Sie die Werte in Paschalwerte umwandeln, erhalten Sie möglicherweise eine Antwort zwischen 0 und 1.

2voto

Alex Aza Punkte 73463

i.Length ist lang. Wenn i.Length kleiner als 1024 ist, i.Length / 1024 wird 0 zurückgegeben.

Verwenden Sie i.Length / 1024.0 en cambio

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X