「Artist [Style] Number.ext」という名前のファイルを含むディレクトリがあります
例:
Atomix [Dubstep] 01.avi
Atomix [Rock] 02.wmv
Atomix [Rock] 03.avi
Lacuna [Rock] 01.mp4
Lacuna [Rock] 02.avi
LINQを使用してファイルを一覧表示し、アーティスト別にグループ化します。この順序で、「[style]」を 1 つだけ含めてから、各アーティストをファイル拡張子で並べ替えます。たとえば、「[ロック]" スタイル:
Atomix [Rock] 03.avi
Atomix [Rock] 02.wmv
Lacuna [Rock] 02.avi
Lacuna [Rock] 01.mp4
「A」は「L」よりも先に、「avi」は「wmv」よりも先に進みます。これは私の望ましい結果ですが、注文しようとすると次のような結果が得られます。
Atomix [Rock] 03.avi
Lacuna [Rock] 02.avi
Lacuna [Rock] 01.mp4
Atomix [Rock] 02.wmv
アーティストが混在しているのに拡張子がソートされていて、ソートすると「mp4」よりも「avi」が先に出てくるのですが、「Atomix」の「A」が「ラクーナ」の「L」より先に出てきてしまうのですが、これの直し方がわかりません。
これは、私が前に言ったファイル名で使用している命令です:
Dim Videos As List(Of IO.FileInfo) = _
Get_Files(Directory, True, ValidExtensions) _
.OrderBy(Function(x) x.Extension) _
.Where(Function(x) x.Name.ToLower.Contains("[rock]")) _
.ToList
PS: メソッドの順序を入れ替えようとしましたが、同じ結果が得られました。
アップデート:
@jyparask ソリューションを使用しようとしましたが、拡張機能を注文するにはまだいくつかの変更が必要です。これが得られるものです。
Aa [Style] 04.mp4
Ab [Style] 01.wmv
Ab [Style] 03.wmv
Ab [Style] 05.mp4
Ab [Style] 05.wmv
Ab [Style] 06.mp4
Ab [Style] 07.mp4
Ab [Style] 09999999999964.mp4
Ac [Style] 166333226.mp4
Ac [Style] 333133333333313313322.mp4
Ac [Style] 44.mp4
Ac [Style] 6049.wmv
そして、これは私が使用しているコードです:
Dim Videos As List(Of IO.FileInfo) = _
Get_Files(Directory, True, ValidExtensions) _
.Where(Function(x) x.Name.ToLower.Contains("[word]")) _
.OrderBy(Function(x) x.Name) _
.ThenBy(Function(x) x.Extension) _
.ToList()