43793


こんにちは。  
C# のLINQ だと思うのですが、少しむずかしくて、質問させてください。

現在、次のようにして、  
ディレクトリのサブフォルダを一覧しています。

[code]

        string folderPath = 任意のどこか
        string[] filePaths;
    
        filePaths = Directory.GetFiles(
            folderPath,
            "*", SearchOption.AllDirectories
        ).OrderBy(f => File.GetLastWriteTime(f)).ToArray<string>();
    
[/code]

ファイルの更新日時の古いものから順番ということでOrderByしています。

このソートを、少し複雑に、

更新"日付"に対して、新しいものから古いもの  
更新"時間"に対して、古いものから新しいもの

にしたいと思っていますが、  
この条件をどのように記載すればいいのかがわかりません。

ご存知でしたら、よろしくおねがいします。


CC BY-SA 4.0
2018-05-04T17:12:39.857
43791
2018-05-04T22:08:49.157
21047
question
c# linq
C# LINQ でファイルの更新日付でソートする時に新しい日付、古い時間順に並べたい


  * [OrderByDescending](https://msdn.microsoft.com/ja-jp/library/system.linq.enumerable.orderbydescending\(v=vs.110\).aspx)で降順に並べます。
  * [ThenBy](https://msdn.microsoft.com/ja-jp/library/system.linq.enumerable.thenby\(v=vs.110\).aspx)でOrderByで同位だった値に対して並べ替え条件を追加できます。
  * [Dateプロパティ](https://msdn.microsoft.com/ja-jp/library/system.datetime.date\(v=vs.110\).aspx)で日付を取り出せます。
  * [TimeOfDayプロパティ](https://msdn.microsoft.com/ja-jp/library/system.datetime.timeofday\(v=vs.110\).aspx)で時刻を取り出せます。

以上をまとめると

[code]

    filePaths = Directory.GetFiles(folderPath, "*", SearchOption.AllDirectories)
        .OrderByDescending(f => File.GetLastWriteTime(f).Date)
        .ThenBy(f => File.GetLastWriteTime(f).TimeOfDay)
        .ToArray();
    
[/code]


CC BY-SA 4.0
2018-05-04T22:08:49.157
43793
2018-05-04T22:08:49.157
4236
43791
answer