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

时间:2014-09-30 17:04:22

标签: c#

以下返回文件夹

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"));      
    }

1 个答案:

答案 0 :(得分:4)

方法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);

请参阅here