Offensichtlich können Sie die Liste der Daten verarbeiten, ohne es zu iterieren, aber man kann Verwenden Sie Linq, um die Sequenz an erster Stelle zu erstellen:
var dateInfo =
Directory.EnumerateFiles(directoryName)
.Select(filename => new FileInfo(filename))
.Select(info => new {info.Name, info.CreationTime});
, dass Ihnen eine Liste der FullName
/CreationTime
Paare geben, wo FullName
der vollständige Pfad der Datei ist, und CreationTime
ist die Zeit der Erstellung der Datei.
Sie können es wie so verarbeiten:
foreach (var item in dateInfo)
Console.WriteLine($"{item.FullName} created on {item.CreationTime}");
Wenn Sie nur die (einmalige) Daten, dass die Dateien auf erstellt wurden:
var uniqueDates = dateInfo.GroupBy(x => x.CreationTime.Date).Select(y => y.Key);
foreach (var date in uniqueDates)
Console.WriteLine(date);
Schließlich, wenn Sie die Daten sein müssen bestellt:
var uniqueDates =
dateInfo.GroupBy(x => x.CreationTime.Date)
.Select(y => y.Key)
.OrderBy(z => z);
(Und .OrderByDescending()
für die umgekehrte Reihenfolge verwenden, natürlich.)
Wenn Sie es vorziehen Linq Abfragesyntax:
var uniqueDates =
from date in dateInfo
group date by date.CreationTime.Date into g
orderby g.Key
select g.Key;
Oder die ganze Sache in einer Linq-Abfrage setzen (vielleicht ein bisschen unreadble hier bekommen, so dass Sie es als separate Abfragen behalten wollen könnte, aber das ist für Vollständigkeit):
var uniqueDates =
from date in
from file in Directory.EnumerateFiles(directoryName)
select new FileInfo(file).CreationTime
group date by date.Date into g
orderby g.Key
select g.Key;
Es ist nicht klar, ob die Daten * in * den Dateien oder nur den Dateisystemeinträgen entsprechen. Hast du schon etwas probiert? –
Sie müssen die Dateieigenschaften abrufen, ich zeige, wie man das in dem Duplikat macht: 'DateTime CreatedDate = Convert.ToDateTime (GetSpecificFileProperties (filePath, 4));' Eine andere Möglichkeit kann man mit [FileInfo.GetCreationTime] (https : //msdn.microsoft.com/en-us/library/system.io.file.getcreationtime (v = vs.110) .aspx) und ein anderer ist der DOS-Befehl 'dir'. –
Es gibt keine linq-Abfrage in irgendeiner der Antworten auf diese doppelte Frage, und auch die Antwort verwendet die Shell, die für die Frage des OP vollständig überkillt (und unnötig) ist. –