按c#中的大小错误排序文件

时间:2014-06-17 08:14:22

标签: c# file sorting

我在排序文件时遇到了一些问题。

我的程序应该允许我按大小和日期对目录文件进行排序。日期工作正常,但是当我尝试按大小排序时,它会返回错误。

这是我的相关代码:

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)'的最佳重载方法匹配有一些无效的参数

3 个答案:

答案 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();