使用 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() )));
描述
您可以简单地使用LINQ (namespace System.Linq)
为了那个原因。
语言集成查询(LINQ,发音为“link”)是一个 Microsoft .NET Framework 组件,为 .NET 语言添加本机数据查询功能
Sample
List<FileInfo> orderedList = files.OrderBy(x => x.CreationTime).ToList();
更多信息
- MSDN - Enumerable.OrderBy
- 维基百科 - 语言集成查询
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)