因为我发现取到的硬盘上的文件都是按名称排序枚举的,如何按文件的更新时间直接取最新10个文件记录,不想全部遍历一遍再排序,再取前10个

解决方案 »

  1.   

           DirectoryInfo dir = new DirectoryInfo("xxx");
           FileInfo[] files = dir.GetFiles();
           List<FileInfo> topTenFiles = files.OrderByDescending(f => f.LastWriteTime).Take(10).ToList();
      

  2.   

    那要看架构了,数据库端 有文件名 字段 ,新名称 字段 ,创建时间,修改时间 等等
    例如 :
    我就是小强.doc    ~/files/200905080105482512.doc    20080508 12:12:12   20080506 12:12:12   
    这样列表啥的,一般直接在数据库端 筛选 
    然后根据虚拟路径 去找文件。
      

  3.   

    遍历是无可避免的,这在算法上是个O(n)的操作。只不过,你可以用Linq to Object来简化代码。
      

  4.   

    2楼的显示找不到类型List,这个需要引用什么类啊??
      

  5.   


    没有办法实现以下是msdn的解释:
    DirectoryInfo GetFiles
    返回文件的名称顺序无法保证;如果需要特定排序顺序,请使用 Sort()()() 方法。
      

  6.   

    using System.Collections.Generic;
      

  7.   

    多谢yangqidong,还差一步了,我想取从第10个开始的20个文件,files.OrderByDescending(f => f.LastWriteTime).Take(10).ToList();这个该怎么改?这个解决了就行了,谢谢啊
      

  8.   

    files.OrderByDescending(f => f.LastWriteTime).Skip(10).Take(10).ToList();