按创建日期C#</fileinfo>对List <fileinfo>进行排序

时间:2012-01-25 10:57:44

标签: c# sorting dataview

在MSDN上使用此示例:

using System.Collections.Generic;  
using System.IO;  

namespace CollectionTest  
{  
    public class ListSort  
    {  
        static void Main(string[] args)  
        {  
            List<FileInfo> files = new List<FileInfo>();  
            files.Add(new FileInfo("d(1)"));  
            files.Add(new FileInfo("d"));              
            files.Add(new FileInfo("d(2)"));  

            files.Sort(new CompareFileInfoEntries());  
        }           

    }  

    public class CompareFileInfoEntries : IComparer<FileInfo> 
    {  
        public int Compare(FileInfo f1, FileInfo f2)  
        {  
            return (string.Compare(f1.Name, f2.Name));  
        }  
    }  

}  

我如何比较创建日期。

F1有一个属性“创建”日期,它是一个FileSystemInfo.Datetime,但当我尝试这个时:

  public class CompareFileInfoEntries : IComparer<FileInfo>
  {
      public int Compare(FileInfo f1, FileInfo f2)
      {

          return (DateTime.Compare(DateTime.Parse(f1.CreationTime), f2.CreationTime));
      }
  }  
}

我为String. compare(string,string)获取重载方法匹配 注意:我在上面的脚本中使用了两种方法来尝试返回创建时间。两者都没有奏效 - 它们在我的实际剧本中都是相同的。

我能得到的最好的是:

return (DateTime.Compare(DateTime.Parse(f1.CreationTime.ToString()), DateTime.Parse(f2.CreationTime.ToString() )));

4 个答案:

答案 0 :(得分:19)

描述

您可以简单地使用LINQ (namespace System.Linq)

  

语言集成查询(LINQ,发音为“link”)是一个Microsoft .NET Framework组件,它为.NET语言添加了本机数据查询功能

示例

List<FileInfo> orderedList = files.OrderBy(x => x.CreationTime).ToList();

更多信息

答案 1 :(得分:3)

嗯,使用linq

怎么样?
files.OrderBy(f=>f.CreationTime)

答案 2 :(得分:0)

Dim filePath as string = "c:\\"

此命令获取ASC排序的目录文件列表

Dim orderedFiles = New System.IO.DirectoryInfo(filePath).GetFiles("*.xml")
                                                        .OrderBy(Function(x) x.CreationTime)

此命令获取DESC命令的目录文件列表

Dim orderedFiles = New System.IO.DirectoryInfo(filePath).GetFiles("*.xml")
                                                        .OrderByDescending(Function(x) x.CreationTime)

答案 3 :(得分:-2)

试试这个:

public class CompareFileInfoEntries : IComparer<FileInfo> 
    { 
        public int Compare(FileInfo f1, FileInfo f2) 
        {
            return (string.Compare(f1.CreationTime.ToString(), f2.CreationTime.ToString())); 
        } 
    }