我在排序文件时遇到了一些问题。
我的程序应该允许我按大小和日期对目录文件进行排序。日期工作正常,但是当我尝试按大小排序时,它会返回错误。
这是我的相关代码:
if (orden.Equals("tam"))
{
ficheroo = dirInfoo.GetFiles(filtro, SearchOption.AllDirectories).OrderBy(f => new FileInfo(f).Length).ToList();
}
错误在于使用new FileInfo(f).Length
,错误是:
La mejor coincidenciademétodosobrecargadopara'System.IO.FileInfo.FileInfo(string)'tiene algunos argumentosnoválidos
这转换为:
'System.IO.FileInfo.FileInfo(string)'的最佳重载方法匹配有一些无效的参数
答案 0 :(得分:6)
DirectoryInfo.GetFiles
已经返回FileInfo[]
- 所以您不需要使用构造函数将每个条目转换为FileInfo
,就像您现在尝试做的那样。你可以使用:
ficheroo = dirInfoo.GetFiles(filtro, SearchOption.AllDirectories)
.OrderBy(f => f.Length)
.ToList();
(作为旁注,值得一看的是,使用垂直空间如何使代码更易于阅读,而不是将所有内容放在一条巨大的线上。)
答案 1 :(得分:1)
GetFiles
已经返回FileInfo
,我怀疑你想要
dirInfoo.GetFiles(filtro, SearchOption.AllDirectories)
.OrderBy(f => f.Length).ToList();
答案 2 :(得分:0)
您收到编译错误,因为GetFiles已经返回FileInfo数组。因此,您无需在OrderBy子句中创建新的FileInfos。
ficheroo = dirInfoo.GetFiles(filtro, SearchOption.AllDirectories).OrderBy(f => f.Length).ToList();