我有一个包含这些文件名的文件的目录:
12.mp4
34.wmv
56.ogm
78.avi
90.m4v
在我的应用程序中,我将目录的文件列入List(Of File.Info),该列表被默认编入索引:
FileList.Item(0).Name = 12.mp4
FileList.Item(1).Name = 34.wmv
FileList.Item(2).Name = 56.ogm
FileList.Item(3).Name = 78.avi
FileList.Item(4).Name = 90.m4v
但是我需要通过以升序模式排序的文件扩展名来处理文件,所以这是我需要的Item-indexation:
FileList.Item(0).Name = 78.avi
FileList.Item(1).Name = 90.m4v
FileList.Item(2).Name = 12.mp4
FileList.Item(3).Name = 56.ogm
FileList.Item(4).Name = 34.wmv
如何在VB.NET或C#中对List进行排序?
答案 0 :(得分:7)
var sorted = FileList.OrderBy(f => f.Extension);
答案 1 :(得分:4)
如果这是List(Of
FileInfo
)
,您可以使用:
FileList.Sort(Function(fi1,fi2) return fi1.Extension.CompareTo(fi2.Extension))
请注意,如果您在构建FileInfo
列表时可以执行此类操作,那么LINQ解决方案可能会更好,例如:
Dim FileList = theDirectoryInfo.GetFiles().OrderBy(Function(f) f.Extension).ToList()
但是,如果列表已经构建,那么就地排序可能比使用LINQ重建列表然后重新分配更清晰。
答案 2 :(得分:1)
试试这个:
public class ExtComparer : IComparer<string>
{
public int Compare(string x, string y)
{
//return Path.GetExtension(x).CompareTo(Path.GetExtension(y)); or
return System.String.Compare(Path.GetExtension(x), Path.GetExtension(y), System.StringComparison.Ordinal);
}
}
使用: MyList.Sort(new ExtComparer());