1

ディレクトリのファイルを一覧表示し、ファイル拡張子で並べ替えます。

Dim Files As List(Of IO.FileInfo) = Get_Files(Directory, True, ValidExtensions).OrderBy(Function(x) x.Extension).ToList

同じ命令に別のパラメーターを追加して、次のように名前の内容でも並べ替えるにはどうすればよいですか?:

x.Name.ToLower.Contains("word")

コンマで区切ろうとしました(はい、とてもばかげています):

Dim Files As List(Of IO.FileInfo) = Get_Files(Directory, True, ValidExtensions).OrderBy(Function(x) x.Extension, x.Name.ToLower.Contains("word")).ToList
UPDATE

@pswg ソリューションを使用しようとしましたが、目的の結果が返されません。

しかし、2 つのリストを別々に作成すると、2 番目のリストで目的の並べ替えが行われます。

 Dim Files As List(Of IO.FileInfo) = _
Get_Files(Directory, True, ValidExtensions).OrderBy(Function(x) x.Extension).ToList

Dim Files2 As List(Of IO.FileInfo) = _
Files.OrderBy(Function(x) x.Name.ToLower.Contains("word")).ToList

しかし、最初のリストだけでそれを改善したいと思います。

4

1 に答える 1

1

ThenBy次の方法を使用します。

Dim Files As List(Of IO.FileInfo) = _
    Get_Files(Directory, True, ValidExtensions) _
        .OrderBy(Function(x) x.Extension) _
        .ThenBy(Function(x) x.Name.ToLower.Contains("word")) _
        .ToList

名前に含まれていないすべてのアイテム"word"が最初に来るように更新するには、これを使用します。

Dim Files As List(Of IO.FileInfo) = _
    Get_Files(Directory, True, ValidExtensions) _
        .OrderBy(Function(x) x.Name.ToLower.Contains("word")) _
        .ThenBy(Function(x) x.Extension) _
        .ToList

もちろん、必要に応じていつでもとを交換OrderByして、単一のソート キーの順序を逆にすることができます。OrderByDescendingThenByThenByDescending

于 2013-08-09T18:39:33.567 に答える