在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() )));
答案 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()));
}
}