List<FileInfo> 排序问题:按指定规则对目录文件列表排序
List 排序问题:按指定规则对目录文件列表排序
嗨,这个需求很清晰,咱们直接通过给不同文件分配排序优先级的方式就能轻松实现,用LINQ的OrderBy配合自定义判断逻辑就搞定了,我给你具体的实现步骤和代码:
核心思路
我们给三类文件分别设置排序权重,让权重越小的排在越前面:
- 文件名以
start_开头的文件,权重设为0(最优先) - 既不是
start_也不是end_开头的普通PDF,权重设为1 - 文件名以
end_开头的文件,权重设为2(最后排)
具体代码实现
首先获取目标目录下的PDF文件列表,然后用OrderBy根据我们定义的权重排序:
// 初始化目录对象 var tempDir = new DirectoryInfo(@"C:\temp"); // 获取目录下所有PDF文件 var fileList = tempDir.GetFiles("*.pdf").ToList(); // 按规则排序 var sortedFileList = fileList.OrderBy(file => { // 按文件名前缀判断排序权重 if (file.Name.StartsWith("start_", StringComparison.OrdinalIgnoreCase)) return 0; if (file.Name.StartsWith("end_", StringComparison.OrdinalIgnoreCase)) return 2; return 1; }).ToList();
细节说明
- 我在
StartsWith里加了StringComparison.OrdinalIgnoreCase,这样就算文件名是Start_342844.pdf或者END_342844.pdf这种大小写混合的情况,也能正确匹配规则;如果你确定文件名是严格小写的start/end前缀,也可以去掉这个参数,不影响核心功能。 - 这个逻辑的扩展性很好,如果以后需要新增其他前缀的排序规则,只需要在判断里加对应的权重分支就行。
内容来源于stack exchange
相关产品推荐
相关产品推荐

