0

所以我有以下几行代码

Dim di As New IO.DirectoryInfo(path)
    Dim diar1 As IO.FileInfo() = di.GetFiles("*." & filetype)

是否可以根据文件名预先排列元素,现在组织文件的方式是有几个数字以错误的顺序显示。我问这个是因为我基本上是确定目录中是否缺少文件。我通过从另一个文件名中减去一个文件名来确定这一点。文件名的示例是 1.0001.tif 1.0002.tif 2.0001.tif 等等。确定文档id号和小数的整体就是文档的页码

4

1 回答 1

0

您可以使用 LINQ 对文件进行排序:

var tifs = Directory.EnumerateFiles(path, "*.tif", SearchOption.TopDirectoryOnly)
    .Select(fn => new { fn, name = Path.GetFileNameWithoutExtension(fn) })
    .Select(x => new
    {
        x.fn,
        x.name,
        major = int.Parse(x.name.Split('.')[0]),
        minor = int.Parse(x.name.Split('.')[1])
    })
    .OrderBy(x => x.major).ThenBy(x => x.minor);

请注意,您需要添加using System.Linq并且这还不是故障安全的。它要求文件始终具有这种格式,否则int.Parse会抛出(您可以使用int.TryParse)。

您可以使用 foreach 来枚举结果:

foreach(var x in tifs)
    Console.WriteLine("File:{0}", x.fn);

编辑:但diar1.Sort()如果您只想按字母顺序排序,您也可以简单地使用(如我的评论中所述)。

于 2012-10-05T23:02:09.180 回答