single.php

C# WinUI3[Directory.GetFiles]で複数の拡張子をフィルターする方法

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]で複数の拡張子でフィルターしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です