代码之家  ›  专栏  ›  技术社区  ›  Daniel

交换(FileInfo)列表中的项目,因为它们在使用IO.FileInfo.Name的求职申请(求职信、简历、证书)中有意义

  •  0
  • Daniel  · 技术社区  · 5 年前

    List(of FileInfo) 其中我有4个pdf文件的属性。名单的排列应该使求职信在索引0处,简历在索引1处,证书在索引2处,另一张在索引3处。我知道求职信是最后加上去的,所以(在排序之前)在索引3处。我是故意这样做的。 这三份文件(简历、证书、另一张)的名字总是一样的。

    我的问题是:有没有一个很好的方式来排序的项目?

    0 回复  |  直到 5 年前
        1
  •  2
  •   jmcilhinney    5 年前

    只有当对象的某些属性可以比较以确定哪个被认为较小,哪个被认为较大时,才能自动进行排序。这可以通过数字、日期、文本和任何其他实现 IComparable 和/或 IComparable(Of T) 接口。如果没有这样的属性,那么您仍然可以在 Comparison(Of T) 委托或实现的类 IComparer IComparer(Of T) . 请看我的三篇博文 here 更多细节。

    作为一个例子,下面是如何使用 比较(T) 代理内联:

    Dim files As List(Of FileInfo)
    
    '...
    
    files.Sort(Function(fi1, fi2)
                   Dim fileNames = {"The First File.pdf",
                                    "The Second File.pdf",
                                    "The Third File.pdf",
                                    "The Fourth File.pdf"}
    
                   Return Array.IndexOf(fileNames, fi1.Name).CompareTo(Array.IndexOf(fileNames, fi2.Name))
               End Function)
    

    (这被认为是实施 排序次序 Compare