C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトでフォルダー内のファイル一覧を取得する[Directory.GetFiles]で複数の拡張子でフィルターを設定する方法です。
検索条件の後方一致で対応
[Where]メソッドの引数で利用するラムダ式の[EndWith](後方一致)で対応できました。
こんな感じで OR で連結させることで一覧取得時に拡張子でフィルターが可能です。
private List<string> GetPhotoFiles(string targetFolder)
{
List<string> resultLists = Directory.GetFiles(targetFolder).Where(f =>
f.EndsWith(".webp") ||
f.EndsWith(".jpeg") ||
f.EndsWith(".jpg") ||
f.EndsWith(".png")).OrderBy(name => name).ToList();
return resultLists;
}
このままだと拡張子の大文字と小文字を区別してしまうので[EndWith]の第二引数を利用します。
private List<string> GetPhotoFiles(string targetFolder)
{
List<string> resultLists = Directory.GetFiles(targetFolder).Where(f =>
f.EndsWith(".webp", true, null) ||
f.EndsWith(".jpeg", true, null) ||
f.EndsWith(".jpg", true, null) ||
f.EndsWith(".png", true, null)).OrderBy(name => name).ToList();
return resultLists;
}
100~200ファイル程度を保存したフォルダーであれば、一覧を取得する際の時間も気にならずに特定の拡張子でフィルターが出来ました。
まとめ
今回は短い記事ですが、WinUI3プロジェクトで、フォルダー内のファイル一覧を取得する[Directory.GetFiles]で複数の拡張子でフィルターを設定する方法について紹介しました。
[Where]メソッドの引数で利用するラムダ式の[EndWith](後方一致)をORで連結して一覧を複数の拡張子でフィルターが可能でした。
WinUI 3で[Directory.GetFiles]で複数の拡張子でフィルターしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。