【问题标题】:sort files by size error in c#在c#中按大小错误对文件进行排序
【发布时间】:2014-08-07 04:09:18
【问题描述】:

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

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

这是我的相关代码:

if (orden.Equals("tam"))
{
    ficheroo = dirInfoo.GetFiles(filtro, SearchOption.AllDirectories).OrderBy(f => new FileInfo(f).Length).ToList();
}

错误是在使用new FileInfo(f).Length,错误是:

La mejor巧合 de método sobrecargado para 'System.IO.FileInfo.FileInfo(string)' tiene algunos argumentos no válidos

这转化为:

'System.IO.FileInfo.FileInfo (string)' 的最佳重载方法匹配有一些无效参数

【问题讨论】:

  • 你能翻译一下错误信息吗?
  • 英文的错误是什么? FileInfo 的参数无效?
  • @Sayse Yup - 无效参数。
  • GetFiles 已经返回 FileInfo 简单地说是 f => f.Length
  • 英文的错误信息会更有帮助,但从谷歌翻译来看,它似乎是一个非常标准的错误信息。由于您没有发布代码的开头,因此很难说,但您应该调试并观察您的 f 变量,这可能是错误的。如果我没记错的话应该是字符串……是这样吗?

标签: c# file sorting


【解决方案1】:

DirectoryInfo.GetFiles 已经返回了 FileInfo[] - 因此您不需要像现在尝试做的那样使用构造函数将每个条目转换为 FileInfo。您可以使用:

ficheroo = dirInfoo.GetFiles(filtro, SearchOption.AllDirectories)
                   .OrderBy(f => f.Length)
                   .ToList();

(作为旁注,值得一看的是,使用垂直空间如何使您的代码比将所有内容都放在一条巨大的行上更容易阅读。)

【讨论】:

    【解决方案2】:

    GetFiles 已经返回 FileInfo,我怀疑你想要

     dirInfoo.GetFiles(filtro, SearchOption.AllDirectories)
                         .OrderBy(f => f.Length).ToList();
    

    【讨论】:

      【解决方案3】:

      您收到编译错误,因为 GetFiles 已返回 FileInfo 数组。所以你不需要在 OrderBy 子句中创建新的 FileInfos。

      ficheroo = dirInfoo.GetFiles(filtro, SearchOption.AllDirectories).OrderBy(f => f.Length).ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-30
        • 2015-10-21
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 2018-04-18
        • 2018-01-15
        相关资源
        最近更新 更多