You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从List<File>创建键值对列表并按CreationTime排序删除最新n项

解决方案

一、使用键值对列表的实现方式

如果需要构建<File, DateTime>的键值对结构,可以直接用List<KeyValuePair<File, DateTime>>存储,之后按值(DateTime)排序并移除最新n条:

  1. 转换为键值对列表:
var fileKeyValueList = files.Select(file => new KeyValuePair<File, DateTime>(file, file.CreationTime)).ToList();
  1. 按创建时间降序排序(最新条目排在最前面):
// 用LINQ生成新的排序列表
var sortedList = fileKeyValueList.OrderByDescending(kv => kv.Value).ToList();
// 或者原地排序,节省内存开销
fileKeyValueList.Sort((a, b) => b.Value.CompareTo(a.Value));
  1. 移除最新的n条:
// 基于新排序列表,跳过前n条得到剩余内容
var remainingItems = sortedList.Skip(n).ToList();
// 基于原地排序的列表,直接移除前n个元素
fileKeyValueList.RemoveRange(0, n);

二、更高效的优化方案

其实完全不需要额外构建键值对结构——File对象本身就包含CreationTime属性,直接操作原始File列表更节省内存和性能:

方式1:原地修改原始列表

// 按创建时间降序排序(最新文件在前)
files.Sort((file1, file2) => file2.CreationTime.CompareTo(file1.CreationTime));
// 移除前n条最新的文件
files.RemoveRange(0, n);

方式2:生成新列表不修改原始数据

// 按创建时间降序排序后跳过前n条,得到剩余文件
var remainingFiles = files.OrderByDescending(file => file.CreationTime).Skip(n).ToList();

这种方案避免了额外的键值对对象创建,减少了内存开销,执行效率更高。

另外你提到的SortedList仅支持按键排序,不符合按值排序的需求,无需考虑。

内容的提问来源于stack exchange,提问作者Soumya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:05:39