Estoy tratando de encontrar archivos con XML Reader que cumplan algunas condiciones, incluso si la edad del archivo es menor que un número determinado. Recibo un error para CreationTime pero no entiendo cómo superarlo. d1 es la fecha actual y d2 es el rango de fechas para el archivo más joven

El error CS1061 'string' no contiene una definición para 'CreationTime' y no se pudo encontrar ningún método de extensión accesible 'CreationTime' que acepte un primer argumento de tipo 'string' (¿falta una directiva de uso o una referencia de ensamblado?)

 public int FileAgeYounger 
            {
                get
                {
                    return FileAgeYounger;
                }
                set
                {
                    DateTime d1 = DateTime.Now;
                    d2 = d1.AddDays(FileAgeYounger);


                    if (subfolders == true & FileExtension != null & Fileprefix != null & FileUseRelativeAgeYounger == true) 
                    {
                        FolderLocation2 = Directory.GetFiles(FolderLocation, Fileprefix + FileExtension, SearchOption.AllDirectories).Where(f => f.CreationTime >= d2 && f.CreationTime <= d1));
                    }
                }
0
mos 16 feb. 2020 a las 07:32

2 respuestas

La mejor respuesta

Directory.GetFiles devuelve solo el nombre del archivo. Puedes usar DirectoryInfo en su lugar.

FileInfo[] fileInfos = new DirectoryInfo(FolderLocation).GetFiles();
IEnumerable<FileInfo> files = fileInfos.Where((f) => f.Extension.Equals(FileExtension) 
            && f.Name.StartsWith(Fileprefix) 
            && f.CreationTime >= d2 
            && f.CreationTime <= d1);
1
lior 16 feb. 2020 a las 07:44

Directory.GetFiles devuelve la colección de cadenas y en esta colección de cadenas (consulte la documentación de MSDN aquí) está intentando utilizar métodos de archivo (System.IO.File) como CreationTime y, por lo tanto, el error.

Si desea ordenar en CreationTime, utilice DirectoryInfo.

DirectoryInfo info = new DirectoryInfo(FolderLocation);
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
1
sam 16 feb. 2020 a las 23:49