首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IO.FileInfo.Name交换( FileInfo)列表中的项目,因为它们在求职申请(求职信、简历、证书)中有意义

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

Stack Overflow用户
提问于 2021-02-16 06:26:51
回答 1查看 35关注 0票数 0

有一个List(of FileInfo),其中我有4个pdf文件的属性。这个列表的排列应该是这样的:求职信在索引0,简历在索引1,证书在索引2,另一张在索引3。我知道求职信是最后添加的,因此(在排序之前)它是在索引3。我是故意这样做的。3个文件的名称(简历、证书、另一张纸)总是相同的。

我的问题是:有没有一种很好的方法来对项目进行排序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 07:26:53

只有当对象的某些属性可以进行比较,以确定哪些被认为较小,哪些被认为较大时,才能进行自动排序。这可以通过数字、日期、文本和实现IComparable和/或IComparable(Of T)接口的任何其他类型自动完成。如果没有这样的属性,那么您仍然可以在实现IComparer和/或IComparer(Of T)Comparison(Of T)委托或类中执行自己的手动比较。有关更多详细信息,请参阅我的三部分博客文章here

作为示例,下面是如何使用内联Comparison(Of T)委托来完成此操作的:

代码语言:javascript
复制
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)

在该示例中,我将文件名(您所说是常量)放入一个数组中,从而将它们映射到数字(元素索引)。然后可以比较这些数字,以确定列表中任何两个项目的相对顺序。您可以定义一个实现IComparer(Of T)的类(也实现IComparer并将非泛型实现委托给泛型实现是一种好的做法),并在其Compare方法中使用相同的逻辑。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66216184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档