我才开始学ASP.NET,请教高手帮我用C#写一个遍历指定位置文件夹里面的文件,返回一个只得到按照时间排列最新20条的数组,谢谢啊,我在线等!!!!

解决方案 »

  1.   

    string directory_path = @"c:\";//指定的目录
    System.IO.DirectoryInfo di = new DirectoryInfo(directory_path);
    FileInfo[] fileInfos = di.GetFiles();
    string[] files = fileInfos.OrderBy(fi => fi.LastAccessTime).Take(Math.Min(20, fileInfos.Length)).Select(fi => fi.Name).ToArray();
    foreach (string filename in files)
    {
        //filename就是你要的文件名
    }
      

  2.   

    List<FileInfo> lst=new List<FileInfo>();foreach (string file in System.IO.Directory.GetFiles("", "*.*", System.IO.SearchOption.AllDirectories))
    {
      lst.Add(new FileInfo(file));
    }
    var result= (from r in lst
          orderby r.Name  
            select r).Take(20); 
      

  3.   

    string directory_path = @"c:\";//指定的目录
    System.IO.DirectoryInfo di = new DirectoryInfo(directory_path);
    FileInfo[] fileInfos = di.GetFiles();
    string[] files = fileInfos.OrderBy(fi => fi.LastAccessTime).Take(Math.Min(20, fileInfos.Length)).Select(fi => fi.Name).ToArray();
    foreach (string filename in files)
    {
        //filename就是你要的文件名
    }
      

  4.   

    2楼的谢谢啊,fi => fi.LastAccessTime在2.0里面是不是没有呢?我在2.0里面提示报错啊,用2.0的该怎么写这个方法了?
      

  5.   

    我也没看懂。
    fi => fi.LastAccessTime什么意思fi又是哪里来的?
      

  6.   


    public static string[] LastAccessedFiles(string dirPath, string filter,int count)
    {
        System.IO.DirectoryInfo di = new DirectoryInfo(dirPath);
        FileInfo[] fileInfos = di.GetFiles();
        Array.Sort(fileInfos, new FileInfoCompare());
        int len = Math.Min(count, fileInfos.Length);
        //string[] files = fileInfos.OrderBy(fi => fi.LastAccessTime).Take(Math.Min(20, fileInfos.Length)).Select(fi => fi.Name).ToArray();
        string[] files = new string[len];
        for (int i = 0; i < len; i++)
        {
            files[i] = fileInfos[i].Name;
        }
        return files;
    }public class FileInfoCompare : IComparer<FileInfo>
    {
        public int Compare(FileInfo x, FileInfo y)
        {
            return DateTime.Compare(x.LastAccessTime, y.LastAccessTime);
        }
    }//调用
    string[] files = LastAccessedFiles("c:\\", "*.*", 20);
    foreach (string filename in files)
    {
        //filename就是你要的文件名
    }
      

  7.   


    顶逍遥兄的方法,using System.IO;
    using System.Linq;
    Lambda表达式,LinQ很常见的东西,JQuery里的匿名函数应该不陌生吧
      

  8.   

    list排序
    List<FileInfo> t=new List<FileInfo>();
    t.Sort(delegate( FileInfo p1, FileInfo p2) { return p1.LastAccessTime.CompareTo(p2.LastAccessTime); });public class FileComparer : IComparer<FileInfo>
    {
      public int Compare(FileInfo x, FileInfo y)
      {
      return x.LastAccessTime.CompareTo(y.LastAccessTime);
      }
      }
    }