嗨,我有一个文件列表。我需要以<文件,DateTime>,然后根据DateTime对其进行排序,并删除最新的"n"个条目。我做到了,
filesDictionary = files.ToDictionary(x => x, x => x.CreationTime);
但由于Dictionary是无序的,我认为在C#中使用键值对列表是安全的,但不确定如何实际编写类似于上面的代码。
我考虑过sortedLists。但它们是根据Key排序的,我想根据值排序。
(还请告知是否有更有效的选择。(
反转操作顺序会容易得多。
- 按文件的创建日期降序排列,以便最新的文件位于顶部
- 跳过你不想要的前n个文件
- 把它编成字典
var fileDictionary = files.OrderByDescending(x => x.CreationDate)
.Skip(n)
.ToDictionary(x => x, x => x.CreationTime)
你不需要字典或其他东西。你可以对你的收藏进行排序,跳过前10次,剩下的就拿走。
// if you want first 10 items
var latest10Items = files.OrderByDescending(r=> r.CreationTime).Take(10).ToList();
// if you want the items except first 10
var rest = files.OrderByDescending(r=> r.CreationTime).Skip(10).ToArray();
// if you want the items except first 10 in a dictionary format
var rest = files.OrderByDescending(r=> r.CreationTime).Skip(10).ToDictionary(r=> r.CreationTime);
您可以将KeyValuePair
与一起使用
filesDictionary = files
.Select(x=> new KeyValuePair<string, DateTime>()
{
Key = x,
Value = x.CreationTime
})
.OrderByDescending(x => x.Value)
.Skip(n);