OrderByDescending不会更改列表中项目的顺序

本文关键字:项目 顺序 列表 OrderByDescending | 更新日期: 2023-09-27 18:25:16

以下按顺序返回文件夹

03-march 
05-may 

我如何修改以下代码以获得逆中的顺序

05-may 
03-march

代码:

private void loadGrid()
{
    List<FileArchive> fiList = new List<FileArchive>();
    String path = Request.QueryString["Path"];
    DirectoryInfo info = new DirectoryInfo(path);
    FileInfo[] files = info.GetFiles().OrderByDescending(m => m.CreationTime.ToString("yyyyMMdd")).ToArray();
    foreach (FileInfo fi in files)
    {
        FileArchive FA = new FileArchive();
        FA.Name = fi.Name;
        FA.FullName = fi.FullName;
        FA.CreationDate = fi.CreationTime;
        FA.RegroupingField =fi.CreationTime.ToString("MM") + "-" + 
        fi.CreationTime.ToString("MMMM") + " | " + fi.CreationTime.Year;
        fiList.Add(FA);
        fiList.OrderByDescending(m => m.CreationDate.ToString("MM"));      
    }

OrderByDescending不会更改列表中项目的顺序

方法OrderByDescending不会对列表进行适当排序。您需要存储并枚举返回值才能使用排序列表。

我会移动这条线:

fiList.OrderByDescending(m => m.CreationDate.ToString("MM"));

退出for循环(完成后只需要排序一次),并将其更改为:

var sortedList = fiList.OrderByDescending(m => m.CreationDate.ToString("MM"));

此外,根据实际日期而不是月份的字符串表示进行排序会更有效,也不容易出错。要执行此操作,请删除ToString调用并保留日期。

var sortedList = fiList.OrderByDescending(m => m.CreationDate);

请参见此处。